golang+redis的延时队列

网址

代码结构很简单,简单代表着自由度很高,使用过程中出现问题也很好修改。

我很喜欢这样的代码,至少我看的懂,该有的都有。

go 复制代码
//package main
//
//import (
//	"context"
//	"fmt"
//	"log"
//	"time"
//
//	queue "github.com/cfanbo/delay-queue-redis"
//	"github.com/go-redis/redis/v8"
//)
//
//var redisClient *redis.Client
//
//type Msg struct {
//	MsgId   int    `json:"msg_id"`
//	MsgBody string `json:"body"`
//	UserId  int    `json:"uid"`
//}
//
//func handerFunc(msg queue.Message) {
//	fmt.Println("消费一条消息:=========")
//	fmt.Printf("%#v\n", msg)
//
//	// 转map
//	m := msg.Body.(map[string]interface{})
//	fmt.Println(m["msg_id"], m["body"], m["uid"])
//}
//
//func main() {
//	ctx, cancel := context.WithCancel(context.Background())
//	redisClient = redis.NewClient(&redis.Options{
//		Addr:     "localhost:6379",
//		Password: "", // no password set
//		DB:       0,  // use default DB
//	})
//
//	_, err := redisClient.Ping(ctx).Result()
//	if err != nil {
//		log.Fatal(err)
//	}
//
//	// 创建延时队列
//	q := queue.NewQueue(ctx, redisClient, queue.WithTopic("test-topic"), queue.WithHandler(handerFunc))
//	q.Start()
//
//	// 创建消息实体对象
//	ticker := time.NewTicker(time.Second * 1)
//	go func(ticker *time.Ticker) {
//		defer ticker.Stop()
//
//		for {
//			select {
//			case <-ticker.C:
//				message := Msg{100, "abc", 43}
//				msg := queue.NewMessage("", time.Now().Add(time.Second*8), message)
//
//				// 发布
//				_, err = q.Publish(msg)
//				if err != nil {
//					log.Fatal(err)
//				}
//				fmt.Println("发布成功一条消息")
//			}
//		}
//
//	}(ticker)
//
//	// 手动延时10秒后退出
//	time.Sleep(time.Second * 10)
//	cancel()
//}
相关推荐
白杨尚青16 分钟前
C++进阶篇(六):map 和 set 的模拟实现——用红黑树封装 mymap/myset(迭代器 + operator[])
开发语言·c++·迭代器·stl·set·map·红黑树
码哥字节3 小时前
缓存一致性:先删缓存还是先更新库?3 种方案对比 + 实战
redis
饮水桶_T4 小时前
JAVA IO流笔记
开发语言·数据结构·算法
2501_933923254 小时前
解读Redis:单线程模型
数据库·redis·缓存
我不会起名字3225 小时前
seq 空洞排查:Mongo 的 51 只是预留上界,Redis CURR 才是已消耗边界
redis·后端·mongodb·go·即时通讯·im·故障排查
Felven6 小时前
C. Brr Brrr Patapim
c语言·开发语言
路溪非溪8 小时前
python标准库使用总结
开发语言·python
时间的拾荒人8 小时前
Redis 集合类型详解:Set 与 Zset
redis·缓存·面试
SomeOtherTime9 小时前
Rust 面向对象介绍(AI回答)
开发语言·python·rust