我使用的RabbitMq消息代理非常棒,但我需要的是在队列中有很长的消息备份时间。因此,如果消息没有到达当时处于非活动状态的某些消费者,并且他们在几分钟后处于活动状态,则最终应通过扇出交换将消息传递给相应的消费者。
我尝试的是增加了队列中的TTL。这是正确的方法还是其他一些技巧?
提前感谢
您可以尝试使用带有x-message-ttl
和x-dead-letter-exchange
的队列
args.put("x-message-ttl", 10000);
args.put("x-dead-letter-exchange",exchange_dead_letter);
channel.queueDeclare(queue, false, false, false, args);
x-dead-letter-exchange
是交换,如果消息在TTL时间之前过期,则将消息重定向到x-dead-letter-exchange
。
然后,您可以根据自己的喜好处理消息。您可以在此处找到更多详细信息:http://www.rabbitmq.com/dlx.html.