本文主要研究一下canal-go的position

Position

canal-go-v1.0.7/protocol/Position/Position.go

package positiontype Position interface {}
  • Position.go定义了一个Position接口

MetaqPosition

canal-go-v1.0.7/protocol/Position/metaq_position.go

package positiontype MetaqPosition struct {    Topic    string    MsgNewId string    Offset   int64}
  • MetaqPosition定义了Topic、MsgNewId、Offset属性

TimePosition

canal-go-v1.0.7/protocol/Position/time_position.go

package positiontype TimePosition struct {    Timestamp int64}func NewTimePosition(timestamp int64) *TimePosition {    tstamp := &TimePosition{Timestamp: timestamp}    return tstamp}
  • TimePosition定义了Timestamp属性,NewTimePosition方法实例化TimePosition

EntryPosition

canal-go-v1.0.7/protocol/Position/entry_position.go

package positionconst (    EVENTIDENTITY_SEGMENT = 3    EVENTIDENTITY_SPLIT   = 5)type EntryPosition struct {    TimePosition    Included    bool    JournalName string    Position    int64    ServerId    int64}func NewEntryPosition(journalName string, position int64, timestamp int64, serverId int64, Included bool) *EntryPosition {    entryPosition := &EntryPosition{TimePosition{timestamp}, false, journalName, position, serverId}    return entryPosition}
  • EntryPosition定义了TimePosition、Included、JournalName、Position、ServerId属性;NewEntryPosition方法实例一个EntryPosition

LogPosition

go-projects/canal-go-v1.0.7/protocol/Position/log_position.go

package positiontype LogPosition struct {    Identity LogIdentity    Postion  EntryPosition}
  • LogPosition定义了LogIdentity、EntryPosition属性

小结

canal-go定义了Position、MetaqPosition、TimePosition、EntryPosition、LogPosition

doc

  • Position