聊聊canal-go的position

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

Position

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

package position

type Position interface {
}
複製代碼
  • Position.go定義了一個Position接口

MetaqPosition

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

package position

type MetaqPosition struct {
	Topic    string
	MsgNewId string
	Offset   int64
}
複製代碼
  • MetaqPosition定義了Topic、MsgNewId、Offset屬性

TimePosition

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

package position

type 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.gospa

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
}
複製代碼
  • EntryPosition定義了TimePosition、Included、JournalName、Position、ServerId屬性;NewEntryPosition方法實例一個EntryPosition

LogPosition

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

package position

type LogPosition struct {
	Identity LogIdentity
	Postion  EntryPosition
}
複製代碼
  • LogPosition定義了LogIdentity、EntryPosition屬性

小結

canal-go定義了Position、MetaqPosition、TimePosition、EntryPosition、LogPositionserver

doc

相關文章
相關標籤/搜索