|
|
|
@ -19,6 +19,10 @@ type DataSyncer struct { |
|
|
|
config *config.Config |
|
|
|
} |
|
|
|
|
|
|
|
// NewDataSyncer 创建一个新的DataSyncer实例
|
|
|
|
// 1. 创建canal实例
|
|
|
|
// 2. 创建位置存储器
|
|
|
|
// 3. 创建事件处理器
|
|
|
|
func NewDataSyncer(cfg *config.Config) (*DataSyncer, error) { |
|
|
|
// 创建canal实例
|
|
|
|
c, err := canal.NewCanal(cfg.ToCanalConfig()) |
|
|
|
@ -41,19 +45,23 @@ func NewDataSyncer(cfg *config.Config) (*DataSyncer, error) { |
|
|
|
} |
|
|
|
|
|
|
|
// 创建事件处理器
|
|
|
|
eventHandler := handler.NewEventHandler(cfg.Sync.BatchSize, cfg.Sync.Workers) |
|
|
|
evehalder := handler.NewEventHandler(cfg.Sync.BatchSize, cfg.Sync.Workers) |
|
|
|
|
|
|
|
syncer := &DataSyncer{ |
|
|
|
canal: c, |
|
|
|
handler: eventHandler, |
|
|
|
handler: evehalder, |
|
|
|
storage: posStorage, |
|
|
|
config: cfg, |
|
|
|
} |
|
|
|
|
|
|
|
c.SetEventHandler(eventHandler) |
|
|
|
// 设置事件处理器 - 这个设置是正确的
|
|
|
|
// c.SetEventHandler(evehalder)
|
|
|
|
return syncer, nil |
|
|
|
} |
|
|
|
|
|
|
|
// Start 启动数据同步
|
|
|
|
// 1. 加载保存的位置
|
|
|
|
// 2. 启动canal连接
|
|
|
|
func (ds *DataSyncer) Start() error { |
|
|
|
// 加载保存的位置
|
|
|
|
savedPos, err := ds.storage.Load() |
|
|
|
@ -98,6 +106,10 @@ func (ds *DataSyncer) positionSaver() { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// Stop 停止数据同步
|
|
|
|
// 1. 保存最后的位置
|
|
|
|
// 2. 关闭事件处理器
|
|
|
|
// 3. 关闭canal连接
|
|
|
|
func (ds *DataSyncer) Stop() { |
|
|
|
log.Printf("停止数据同步...") |
|
|
|
|
|
|
|
|