RabbitMQ使用者是否可以配置为仅使用相同消息的已定义尝试次数

时间:2013-08-15 20:57:15

标签: java rabbitmq amqp

RabbitMQ能否以某种方式运行,我可以定义我的消费者它有限制使用相同的消息。即我的消费者用enqueue = true做一个基本的Reject。它会无限地继续听同样的信息。我不是在谈论队列方面的TTL。但是对于消费者的控制/配置告诉我只想消耗它5次,然后将其发送到另一个队列。这可以实现吗?

2 个答案:

答案 0 :(得分:1)

这可以在应用程序级别或通过TTLDead Letter Exchanges完成。在经纪人方面你不想知道你想要什么(我认为你无法在消费者方面做到这一点)

P.S。:只是让评论更加明显

主要思想是创建自定义ttl属性(在TCP / IP包中使用a-la hops计数),并在每次消息消耗时减少它(并使用新的props重新发布消息体)。当它达到零时 - 将其发布到其他队列。

答案 1 :(得分:1)

所以是的,我相信这可以做到。您需要缓存收到的邮件的传递标签,并跟踪拒绝计数。一旦特定消息的拒绝计数很大,然后将该消息发布到另一个队列。您还需要向RabbitMQ确认收到的消息,并可能创建一条新消息(带有新的传递标签)并将其发布。