1 Star 0 Fork 0

leovs/yc-go-sdk

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
canal.go 1.50 KB
一键复制 编辑 原始数据 按行查看 历史
leovs 提交于 2024-12-14 20:56 +08:00 . first commit
// Copyright 2023 ztlcloud.com
// leovs @2023.12.12
package conf
import (
"gitee.com/leovs/yc-go-sdk/log"
"github.com/go-mysql-org/go-mysql/canal"
"github.com/go-mysql-org/go-mysql/mysql"
"sync"
)
var once sync.Once
type CanalConfig struct {
Addr string `yaml:"addr"`
User string `yaml:"user"`
Password string `yaml:"password"`
TableDB string `yaml:"tableDB"`
Tables []string `yaml:"tables"`
eventHandler canal.EventHandler `yaml:"-"`
pos *mysql.Position `yaml:"-"`
}
func (e *CanalConfig) SetEventHandler(eventHandler canal.EventHandler) {
e.eventHandler = eventHandler
}
func (e *CanalConfig) SetPost(pos *mysql.Position) {
e.pos = pos
}
// Init 初始化配置
func (e *CanalConfig) Init() {
if e.Addr == "" {
return
}
once.Do(func() {
cfg := canal.NewDefaultConfig()
cfg.Addr = e.Addr
cfg.User = e.User
cfg.Password = e.Password
cfg.Dump.TableDB = e.TableDB
cfg.Dump.Tables = e.Tables
newCanal, err := canal.NewCanal(cfg)
if err != nil {
log.Error("初始化Canal失败 %v \n", err)
return
}
if e.eventHandler != nil {
newCanal.SetEventHandler(e.eventHandler)
if e.pos != nil {
if err = newCanal.RunFrom(*e.pos); err != nil {
log.Error("初始化Canal失败 %v \n", err)
return
}
} else {
if err = newCanal.Run(); err != nil {
log.Error("初始化Canal失败 %v \n", err)
return
}
}
log.Printf("初始化Canal成功\n")
}
})
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/leovs/yc-go-sdk.git
git@gitee.com:leovs/yc-go-sdk.git
leovs
yc-go-sdk
yc-go-sdk
v1.2.3

搜索帮助