前言
前几天写了一篇关于PHP和RabbitMQ如何通过插件实现延迟队列的功能。
今天写另外一篇不需要插件的方式,使用RabbitMQ的死信队列(Dead-Letter-Exchanges, DLX)和消息TTL(Time-To-Live)。
这种方法涉及到设置消息的TTL,当消息在队列中超过设定的TTL时间后,它会被发送到死信交换器。然后,你可以配置死信交换器将消息路由到另一个队列进行处理。这种方式不需要安装任何插件,但延迟时间的精度取决于消息在队列中的等待时间。
前期准备,需要安装好docker、docker-compose的运行环境。
需要安装RabbitMQ,以及通过插件实现延迟队列功能的可以浏览以下文章。
如何使用PHP和RabbitMQ实现延迟队列(方式一)?-优快云博客
一、禁用RabbitMQ延迟插件功能
1、进入RabbitMQ容器,执行如下命令。
docker exec -ti rabbitmq bash
2、禁用插件,执行如下命令。
rabbitmq-plugins disable rabbitmq_delayed_message_exchange
3、检查已启用插件,执行如下命令。
rabbitmq-plugins list -e