在RabbitMQ 3.5.7及以后的版本提供了一个插件(rabbitmq-delayed-message-exchange)来实现延时队列功能。同时插件依赖Erlang/OPT 18.0及以上。
插件的源码地址:
https://github.com/rabbitmq/rabbitmq-delayed-message-exchange
插件下载地址:
https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases
以linux下为例:
1、进入插件目录
$ whereis rabbitmq #查询rabbitmq所在目录
$ cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.12/plugins #进入所在目录的plugins目录
2、下载插件
wget https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/3.8.9/rabbitmq_delayed_message_exchange-3.8.9-0199d11c.ez
3、启用插件
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
4、停用插件
rabbitmq-plugins disable rabbitmq_delayed_message_exchange
5、插件使用
通过声明一个x-delayed-message类型的exchange来使用delayed-messaging特性。x-delayed-message是插件提供的类型,并不是rabbitmq本身的(区别于direct、topic、fanout、headers)。
使用方法可以参考上面git上插件源码页面提示。
Done!