序
本文主要研究一下canal-go的SimpleCanalConnector
SimpleCanalConnector
canal-go-v1.0.7/client/simple_canal_connector.go
type SimpleCanalConnector struct { Address string Port int UserName string PassWord string SoTime int32 IdleTimeOut int32 ClientIdentity pb.ClientIdentity Connected bool Running bool Filter string RollbackOnConnect bool LazyParseEntry bool}
- SimpleCanalConnector定义了Address、Port、UserName、PassWord、SoTime、IdleTimeOut、ClientIdentity、Connected、Running、Filter、RollbackOnConnect、LazyParseEntry属性
NewSimpleCanalConnector
canal-go-v1.0.7/client/simple_canal_connector.go
//NewSimpleCanalConnector 创建SimpleCanalConnector实例func NewSimpleCanalConnector(address string, port int, username string, password string, destination string, soTimeOut int32, idleTimeOut int32) *SimpleCanalConnector { s := &SimpleCanalConnector{ Address: address, Port: port, UserName: username, PassWord: password, ClientIdentity: pb.ClientIdentity{Destination: destination, ClientId: 1001}, SoTime: soTimeOut, IdleTimeOut: idleTimeOut, RollbackOnConnect: true, } return s}
- NewSimpleCanalConnector方法创建了SimpleCanalConnector实例
Connect
canal-go-v1.0.7/client/simple_canal_connector.go
//Connect 连接Canal-serverfunc (c *SimpleCanalConnector) Connect() error { if c.Connected { return nil } if c.Running { return nil } err := c.doConnect() if err != nil { return err } if c.Filter != "" { c.Subscribe(c.Filter) } if c.RollbackOnConnect { c.waitClientRunning() c.RollBack(0) } c.Connected = true return nil}
- Connect方法主要执行c.doConnect()、c.Subscribe(c.Filter)方法,若Rollback