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()
//}
相关推荐
军训猫猫头8 分钟前
87.在线程中优雅处理TryCatch返回 C#例子 WPF例子
开发语言·ui·c#·wpf
yuanpan11 分钟前
如何将python项目打包成Windows环境的exe应用提供给客户使用
开发语言·windows·python
njsgcs22 分钟前
python getattr调用当前文件引用的模块内的方法,实例
开发语言·python
lly20240628 分钟前
R 列表:深入解析及其在数据分析中的应用
开发语言
du fei39 分钟前
C# 与 相机连接
开发语言·数码相机·c#
独好紫罗兰40 分钟前
洛谷题单3-P2669 [NOIP 2015 普及组] 金币-python-流程图重构
开发语言·python·算法
1zero1041 分钟前
[C语言笔记]09、指针
c语言·开发语言·笔记
青橘MATLAB学习1 小时前
钢管下料问题:基于Matlab的优化求解与实践
开发语言·数学建模·matlab·钢管下料
褚翾澜1 小时前
Ruby语言的代码重构
开发语言·后端·golang
我不会编程5551 天前
Python Cookbook-5.1 对字典排序
开发语言·数据结构·python