// Package etcd... // // Description : etcd... // // Author : go_developer@163.com<白茶清欢> // // Date : 2021-11-23 11:25 上午 package etcd import ( "math" "time" "go.etcd.io/etcd/clientv3" ) // 初始化client各种默认配置 const ( // DefaultDialTimeout 默认超时时间 DefaultDialTimeout = 5 * time.Second // DefaultDialKeepAliveTime 默认ping时间 DefaultDialKeepAliveTime = 3 * time.Second // DefaultDialKeepAliveTimeout ping之后等待响应的超时时间, 超时未响应, 连接将会断开 DefaultDialKeepAliveTimeout = 5 * time.Second // DefaultMaxCallSendMsgSize 客户端请求体最大字节数, 默认 2M , 和etcd默认值保持一致 DefaultMaxCallSendMsgSize = 2 * 1024 * 1024 // DefaultMaxCallRecvMsgSize 客户端接受的响应题最大大小, 默认int32最大值, 和etcd默认值保持一致 DefaultMaxCallRecvMsgSize = math.MaxInt32 ) // 操作过程中各种默认配置 const ( // DefaultPutTimeout put 默认超时时间 DefaultPutTimeout = time.Second // DefaultGetTimeout get 默认超时时间 DefaultGetTimeout = time.Second ) // WatcherHandler 监听key变化的处理函数 type WatcherHandler func(event *clientv3.Event) // CancelWatcherHandler 取消监听后的处理函数 type CancelWatcherHandler func(key string, data interface{}) // TimeoutWatcherHandler 超时之后的回调函数 type TimeoutWatcherHandler func(key string, timeout time.Duration) // LeaseKeepALiveHandler 续期成功的处理 type LeaseKeepALiveHandler func(data *LeaseKeepAliveData) // LeaseKeepAliveData 自动续期的数据结构 // // Author : go_developer@163.com<白茶清欢> // // Date : 8:28 下午 2021/11/23 type LeaseKeepAliveData struct { Key string `json:"key"` // 续期key StartTime int64 `json:"start_time"` // 开始续期时间 LastLeaseTime int64 `json:"last_lease_time"` // 上一次续期事件时间 LeaseCnt int64 `json:"lease_cnt"` // 续期次数 HasFinish bool `json:"has_finish"` // 是否完成 LeaseFinishType string `json:"lease_finish_type"` // 续期完成类型 LeaseFinishTime int64 `json:"lease_finish_time"` // 续期完成时间 LeaseDetail *clientv3.LeaseKeepAliveResponse `json:"lease_detail"` // 续约数据 Data map[string]interface{} `json:"data"` // 携带的数据 }