PHP如何通过rabbitMQ死信队列实现业务的延时/定时操作
2020-10-09 20:15 北桥苏 阅读(1881) 评论(0) 编辑 收藏 举报前言:
之前也通过文章介绍过rabbitMQ的搭建以及在PHP开发场景下的一些使用。这个主要从rabbitMQ的web控制台介绍死信队列的操作,以及代码层面的小应用等。关于死信的原理,rabbitMQ的特性等可以在其他文章中找到,这里就不详细介绍了。
场景:
死信的场景主要是用于来实现延迟队列,比如之前介绍的redis订阅的过期事件。都是用于在未来某个时间段需要对某些数据进行操作(删除/更新),就比如某些订单创建成功后添加到一个队列中。程序消费掉一部分已经支付过的订单,而那些未支付状态并且超过30分钟(举例的超时时间)就将其放入到延迟队列进行批量处理。
死信队列概述:
可以把死信队列理解为过滤后的水池,前面的队列就像负责接水的大水池,只有当大水池满了或者过滤筛选过的水才会流入小水池。最后小水池的水再进行饮用或者使用。
流程:
1. 创建1个死信交换机(正常创建即可)和一个死信队列(正常创建),二者通过路由键绑定。
2. 创建1个业务交换机, 创建一个业务队列,队列关联一个死信交换机及与交换机绑定的一个死信队列路由键。
3. 最后将业务交换机与业务队列绑定。
4. 代码只需要对生产消息到业务队列,消费死信队列的消息就可以。
步骤:
1. 通过搭建的地址xxx.xxx.xxx.xxx:15672进入rabbitMQ的web控制台,新建虚拟机并进入。
2. 新建死信交换机和死信队列,如下的ex_dlx,queue_dlx。
3. 新建业务交换机,和业务队列,队列关联死信交换机。
4. 用代码生产一条消息,然后查看业务队列是否有新消息。
5. 两分钟后(创建队列时设置)查看死信队列是否有消息进来,以下表示死信队列已经有新消息。
6. 最后对死信队列的消息用代码进行消费了,表示已经过期的数据。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2019-10-09 【番外】新手如何选购配件比价到完成电脑组装升级