本文主要研究一下canal-go的positiongit
canal-go-v1.0.7/protocol/Position/Position.gogithub
package position type Position interface { }
canal-go-v1.0.7/protocol/Position/metaq_position.gocode
package position type MetaqPosition struct { Topic string MsgNewId string Offset int64 }
canal-go-v1.0.7/protocol/Position/time_position.goserver
package position type TimePosition struct { Timestamp int64 } func NewTimePosition(timestamp int64) *TimePosition { tstamp := &TimePosition{Timestamp: timestamp} return tstamp }
canal-go-v1.0.7/protocol/Position/entry_position.go接口
package position const ( 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 }
go-projects/canal-go-v1.0.7/protocol/Position/log_position.goget
package position type LogPosition struct { Identity LogIdentity Postion EntryPosition }
canal-go定義了Position、MetaqPosition、TimePosition、EntryPosition、LogPositionstring