定义延迟队列生产者接口以及基于redis的实现

This commit is contained in:
2022-07-06 18:10:33 +08:00
parent bce2f7159e
commit 436fc2626e
5 changed files with 88 additions and 0 deletions

18
delay/abstract.go Normal file
View File

@ -0,0 +1,18 @@
// Package delay ...
//
// Description : delay ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2022-07-06 18:06
package delay
// IProduce 生产者约束
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 18:06 2022/7/6
type IProduce interface {
// Produce 生产数据
Produce(data *Queue) error
}

19
delay/define.go Normal file
View File

@ -0,0 +1,19 @@
// Package delay ...
//
// Description : delay ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2022-07-06 17:55
package delay
// Queue 队列数据
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 17:56 2022/7/6
type Queue struct {
Name string `json:"name"` // 队列名称
DelayTime int `json:"delay_time"` // 延迟执行时间
Data map[string]interface{} `json:"data"` // 入队数据
}

39
delay/redis_produce.go Normal file
View File

@ -0,0 +1,39 @@
// Package delay ...
//
// Description : delay ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2022-07-06 17:59
package delay
import (
"github.com/go-redis/redis/v8"
)
// NewRedisQueue 获取redis队列实例
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 18:09 2022/7/6
func NewRedisQueue(redisInstance *redis.Client) IProduce {
return &redisProduce{client: redisInstance}
}
// withRedis 使用redis实现延迟队列
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 17:59 2022/7/6
type redisProduce struct {
client *redis.Client
}
// Produce 生产数据
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 18:03 2022/7/6
func (rp *redisProduce) Produce(data *Queue) error {
return nil
}