规划基于redis pub/sub 的驱动实现
This commit is contained in:
112
redis_pub_sub.go
Normal file
112
redis_pub_sub.go
Normal file
@ -0,0 +1,112 @@
|
||||
// Package event ...
|
||||
//
|
||||
// Description : event ...
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 2024-06-25 16:06
|
||||
package event
|
||||
|
||||
import (
|
||||
"context"
|
||||
"git.zhangdeman.cn/zhangdeman/event/abstract"
|
||||
"git.zhangdeman.cn/zhangdeman/event/define"
|
||||
"git.zhangdeman.cn/zhangdeman/wrapper"
|
||||
"github.com/redis/go-redis/v9"
|
||||
)
|
||||
|
||||
var (
|
||||
RedisEventPubSubClient abstract.IEvent
|
||||
)
|
||||
|
||||
// InitRedisPubSubEvent 初始化redis事件驱动, 基于 pub / sub 指令
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 16:24 2024/6/25
|
||||
func InitRedisPubSubEvent(redisClient *redis.Client, pubSubConfig *define.RedisEventPubSubConfig) {
|
||||
instance := &RedisEventPubSub{
|
||||
redisClient: redisClient,
|
||||
pubSubConfig: pubSubConfig,
|
||||
}
|
||||
instance.SetRedisClient(redisClient, pubSubConfig)
|
||||
RedisEventPubSubClient = instance
|
||||
}
|
||||
|
||||
// RedisEventPubSub 基于redis的事件驱动
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 16:07 2024/6/25
|
||||
type RedisEventPubSub struct {
|
||||
redisClient *redis.Client // redis客户端
|
||||
pubSubConfig *define.RedisEventPubSubConfig // 事件配置
|
||||
|
||||
}
|
||||
|
||||
func (r *RedisEventPubSub) SendEvent(ctx context.Context, eventData *define.EventData) (*define.SendResult, error) {
|
||||
//TODO implement me
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
func (r *RedisEventPubSub) SendEventAsync(ctx context.Context, eventData *define.EventData) {
|
||||
//TODO implement me
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
func (r *RedisEventPubSub) SendFailCallback(ctx context.Context, eventResult *define.SendResult) {
|
||||
//TODO implement me
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
func (r *RedisEventPubSub) SendSuccessCallback(ctx context.Context, eventResult *define.SendResult, err error) {
|
||||
//TODO implement me
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
func (r *RedisEventPubSub) ConsumeEvent() (<-chan *define.EventData, error) {
|
||||
//TODO implement me
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
func (r *RedisEventPubSub) ConsumeFailCallback(eventData *define.EventData, err error) {
|
||||
//TODO implement me
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
func (r *RedisEventPubSub) ConsumeSuccessCallback(eventData *define.EventData) {
|
||||
//TODO implement me
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
func (r *RedisEventPubSub) Destroy() {
|
||||
//TODO implement me
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
func (r *RedisEventPubSub) DriverType() string {
|
||||
//TODO implement me
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
// SetRedisClient 设置redis客户端
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 16:30 2024/6/25
|
||||
func (r *RedisEventPubSub) SetRedisClient(redisClient *redis.Client, pubSubConfig *define.RedisEventPubSubConfig) {
|
||||
if nil == pubSubConfig {
|
||||
pubSubConfig = &define.RedisEventPubSubConfig{
|
||||
Topic: "",
|
||||
PartitionNum: 0,
|
||||
}
|
||||
}
|
||||
if len(pubSubConfig.Topic) == 0 {
|
||||
pubSubConfig.Topic = "EVENT_TOPIC_" + wrapper.StringFromRandom(128, "").Md5().Value
|
||||
}
|
||||
if pubSubConfig.PartitionNum <= 0 {
|
||||
pubSubConfig.PartitionNum = define.DefaultPartitionNum
|
||||
}
|
||||
r.redisClient = redisClient
|
||||
r.pubSubConfig = pubSubConfig
|
||||
}
|
Reference in New Issue
Block a user