// 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 }