案例:
同一队列中,有2个消息A和B,A延时3小时,先进。B延时2小时,后进。那么AB会在3小时后才会被消费。
解决方案:
通过插件rabbitmq-delayed-message-exchange插件解决延迟功能
启用插件
使用命令rabbitmq-plugins enable rabbitmq_delayed_message_exchang启用插件
rabbitmq-plugins enable rabbitmq_delayed_message_exchang
输出如下:
The following plugins have been enabled:
rabbitmq_delayed_message_exchange
通过rabbitmq-plugins list查看已安装列表,如下:
...
[ ] rabbitmq_delayed_message_exchange 20171215-3.6.x
...
windows直接重启即可
通过rabbitmq-plugins list查看已安装列表
安装插件后会生成新的Exchange类型x-delayed-message,该类型消息支持延迟投递机制,接收到消息后并未立即将消息投递至目标队列中,而是存储在mnesia(一个分布式数据系统)表中,检测消息延迟时间,如达到可投递时间时并将其通过x-delayed-type类型标记的交换机类型投递至目标队列。
java使用方案参考
https://blog.csdn.net/eumenides_/article/details/86027185
参考:https://www.cnblogs.com/-mrl/p/11114116.html