feat: 升级接口约束以及定义

This commit is contained in:
2026-04-13 17:04:21 +08:00
parent c232fe9317
commit ad44a84718
8 changed files with 195 additions and 0 deletions

14
abstract/IConsumer.go Normal file
View File

@@ -0,0 +1,14 @@
// Package abstract ...
//
// Description : abstract ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2025-08-22 16:33
package abstract
// IConsumer 消费者接口约束
type IConsumer interface {
Start() error // 启动消费者
Stop() // 停止消费者
}

View File

@@ -0,0 +1,28 @@
// Package abstract ...
//
// Description : abstract ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2025-08-27 08:54
package abstract
import (
"context"
"git.zhangdeman.cn/zhangdeman/queue/define"
)
// IConsumerHandler 消费者的一些处理逻辑
type IConsumerHandler interface {
Lock(ctx context.Context, serverInfo *define.EventConsumerServerInfo, data *define.EventData) error // 加锁
Unlock(ctx context.Context, serverInfo *define.EventConsumerServerInfo, data *define.EventData) error // 释放锁
MessageLogic(ctx context.Context, serverInfo *define.EventConsumerServerInfo, data *define.EventData) error // 处理订阅到的消息
PanicCallback(ctx context.Context, serverInfo *define.EventConsumerServerInfo, data *define.EventData, e any) // 出现异常panic的回调
SubscribeFailureCallback(ctx context.Context, serverInfo *define.EventConsumerServerInfo, err error) // 订阅失败的回调
UnmarshalFailureCallback(ctx context.Context, serverInfo *define.EventConsumerServerInfo, msgData string, err error) // 数据解析失败的回调
Async(ctx context.Context, serverInfo *define.EventConsumerServerInfo, data *define.EventData) bool // 每一条数据可独立判断是否进行异步处理
LockFailureCallback(ctx context.Context, serverInfo *define.EventConsumerServerInfo, data *define.EventData, err error) // 加锁失败的回调
UnlockFailureCallback(ctx context.Context, serverInfo *define.EventConsumerServerInfo, data *define.EventData, err error) // 释放锁失败的回调
MessageLogicFailureCallback(ctx context.Context, serverInfo *define.EventConsumerServerInfo, data *define.EventData, err error) // 消息数据处理失败的回调
}

22
abstract/IDelayQueue.go Normal file
View File

@@ -0,0 +1,22 @@
// Package abstract ...
//
// Description : abstract ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2025-08-29 12:08
package abstract
import (
"context"
"git.zhangdeman.cn/zhangdeman/queue/define"
redisPkgDefine "git.zhangdeman.cn/zhangdeman/redis/define"
)
// IDelayQueue 延迟队列接口约束
type IDelayQueue interface {
Send(ctx context.Context, delayTime int64, data *define.EventData) *redisPkgDefine.RedisResult // 生产事件
Distribute(ctx context.Context) // 时间到期分发
Stop() // 停止延迟队列
}

21
abstract/IProducer.go Normal file
View File

@@ -0,0 +1,21 @@
// Package abstract ...
//
// Description : abstract ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2025-08-22 16:33
package abstract
import (
"context"
"git.zhangdeman.cn/zhangdeman/queue/define"
)
// IProducer 生产者接口约束
type IProducer interface {
Sync(ctx context.Context, data *define.EventData) // 同步发送事件
Async(ctx context.Context, data *define.EventData) // 异步发送事件
GetProducerHandler() IProducerHandler // 获取生产者处理器
}

View File

@@ -0,0 +1,46 @@
// Package abstract ...
//
// Description : abstract ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2025-08-27 08:54
package abstract
import (
"context"
"git.zhangdeman.cn/zhangdeman/queue/define"
)
// IProducerHandler 生产者数据处理的接口约束
type IProducerHandler interface {
Lock(ctx context.Context, data *define.EventData) error // 逻辑加锁
Unlock(ctx context.Context, data *define.EventData) error // 逻辑释放锁
SuccessCallback(ctx context.Context, data *define.EventData, result *define.EventProduceResult) // 成功回调
FailureCallback(ctx context.Context, data *define.EventData, result *define.EventProduceResult) // 失败回调
PanicCallback(ctx context.Context, data *define.EventData, e any) // panic回调
}
type DefaultProducerHandler struct {
}
func (d DefaultProducerHandler) Lock(ctx context.Context, data *define.EventData) error {
return nil
}
func (d DefaultProducerHandler) Unlock(ctx context.Context, data *define.EventData) error {
return nil
}
func (d DefaultProducerHandler) SuccessCallback(ctx context.Context, data *define.EventData, result *define.EventProduceResult) {
return
}
func (d DefaultProducerHandler) FailureCallback(ctx context.Context, data *define.EventData, result *define.EventProduceResult) {
return
}
func (d DefaultProducerHandler) PanicCallback(ctx context.Context, data *define.EventData, e any) {
return
}