延时队列&死信队列
有些场景下,我们希望为使用的消息设定有效期 。在有效期内,这些消息有效可用;但过期后,这些消息将变得无效不可用 , 同时,它们还将自动进入一个称之为“死信”的队列 。
为了说明这些概念 , 我们还是来举一个具体的例子 。该例子的功能说明如下:
- 首先,在RabbitMQ服务器上定义一个名为"bbq"的队列 。且设定此队列中存放的所有消息会在60秒后过期失效 。
- 然后,在RabbitMQ服务器上定义一个与"bbq"队列对应的死信队列 。并连续从该死信队列中获取消息并把它们写入名为BB.txt的文件 。
- 最后,向RabbitMQ服务器上的"bbq"队列发送3个消息 。
using DeveloperSharp.RabbitMQ;-------------------------- //定义bbq队列,其中存放的消息会在60秒后过期 var myQ = RabbitMQHelper.SetQueue("bbq", 60000); //定义与bbq队列对应的死信队列 var expQ = RabbitMQHelper.GetQueue("bbq"); //向BB.txt这个文本文件中连续写入死信队列中的消息 expQ.UseMessage(t => { System.IO.File.AppendAllText("D:/BB.txt", t.Message); return true; }); //向bbq队列发送3个消息 myQ.SendMessage("jinA"); myQ.SendMessage("jinB"); myQ.SendMessage("jinC"); /* //【附加题】:若去掉注释让此语句执行,死信队列中将不会获得消息(为啥?自己推理) RabbitMQHelper.UseMessage("bbq", t => { return true;//若此处返回false,死信队列将会获得消息 }); */运行以上程序:
60秒之内,【BB.txt文件】中没有内容
60秒以后,【BB.txt文件】中显示出:jinAjinBjinC
通过以上例子,我们可简单预测一下,延时队列&死信队列常用在“限时消费”、“过期处理”等场景 。生活中最常见示例如:订单请在10分钟内支付完毕、等等之类功能...
使用消息服务对解耦分布式系统、实现发布/订阅、提高系统性能、等方面都有巨大用处,相信本文会扩展你的思维认知,让你在相关技术解决方案上有更多灵活思路+联想空间!
推荐阅读
- 《基于Apache Flink的流处理》读书笔记
- 苹果A15处理器参数_苹果A15处理器表现
- Java Style的C++容器流式处理类
- 手机进水怎么办,手机进水后怎么处理(手机进水了如何处理好)
- SpringBoot+MyBatis Plus对Map中Date格式转换的处理
- crondtab定时任务%字符无法识别的处理
- 利用Pandas处理数据 缺失值的处理 数据库的使用 python-数据描述与分析2
- C++ 右值引用与 const 关键字
- 天玑800u相当于骁龙多少_天玑800u相当于多少处理器
- 荣耀v50搭载什么处理器_荣耀v50处理器性能介绍