1 、通过 RabbitMQ 的 DLX 和 TTL 来实现延迟队列 2 、消息,00:00:00 和 00:30:00 ,到点了都没有转发 3 、奇怪的是我访问 web 界面,get message 后就自动会转发了 rabbitmq, 队列, 死信
死信队列有个限制是,队列里的延迟时间要一致,否则前面的消息没到过期时间,那么后面的其他消息也不会被处理。 有两个处理方式,一个是根据过期时间分别建立死信队列,另外一个是使用 Delayed Message 插件
@dunhanson 我应该就是这个问题了,我记得我之前看过 rabbitmq 延迟队列相关的文章,其中提到一个弊端就是,同一个队列前面入队的长延时消息会阻塞住后面短延时的消息,比如: 先进去了一条需要延时 1 小时的消息,再进去一条需要延时半小时的小时,实际上半小时后,后一条消息不会出去,因为队列先进先出的特性,被前面的消息堵住了。 简易解决方案就是把不同延时时间的消息分开来,分到不同队列去