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()
//}
相关推荐
淘矿人30 分钟前
DeepSeek V4对决Claude 4.8:AI模型终极横评
java·开发语言·人工智能·python·sql·php·pygame
skywalk81631 小时前
你希望的「多路捕获」语法是哪种形式?具体而言,「捕获 类型为 e」指的是什么?
开发语言·编程
两年半的个人练习生^_^1 小时前
JMM 进阶:彻底理解 volatile 实现原理
java·开发语言
晚风吹红霞1 小时前
C++模板进阶:非类型参数、特化、分离编译与优缺点解析
开发语言·c++
小小龙学IT1 小时前
Go语言后端开发入门指南
开发语言·后端·golang
不会C语言的男孩1 小时前
C++ Primer 第8章:IO 库
开发语言·c++
兰令水1 小时前
leecodecode【层序遍历】【2026.6.3打卡-java版本】
java·开发语言
Halo_tjn1 小时前
反射与设计模式2
java·开发语言·算法
kaoa0002 小时前
Linux入门攻坚——79、XEN虚拟化-2
linux·运维·开发语言
磊 子2 小时前
C++仿函数以及STL内置仿函数
开发语言·c++