RabbitMQ配置-使用计数器的延迟和错误队列

时间:2019-01-29 11:12:10

标签: rabbitmq rabbitmq-exchange

我正在尝试配置RabbitMQ,我不知道是否可能或是否有更好的解决方案。

我正在使用Java客户端,我想在AmqpRejectAndDontRequeueException之后,让RabbitMQ将消息重定向到另一个队列并等待一段时间。之后,该消息再次到达第一个队列,然后重复工作流程,直到一个计数达到一个值为止,然后,该消息将被重定向到错误队列并停留在那里。

我想要这个而不更改Java代码。 Java只知道第一个队列。

我几乎做到了:

2 exchange 3 queues:
queue.active (dlx exchange.to_wait)(the queue that the java knows) 
queue.waiting (ttl 60sec dlx to exchange.to_active_or_error)
queue.error
exchange.to_wait(direct type,  binded to queue.waiting)
exchange.to_active_or_error(header type, redirect to active ou error AND THAT IS THE PROBLEM)

问题:标头中有一个“计数”,如果可以在标头交换中使用它(exchange.to_active_or_error)会很容易,但是计数位于x-death标头中,该标头是json和计数只是其中的一个属性:

x-death=[
 {reason=expired, count=3, exchange=exchange.waiting, routing-keys=[], 
    time=Mon Jan 28 18:23:50 BRST 2019, queue=q.ehh2}, 
 {reason=rejected, count=3, exchange=exchange.active, routing-keys=[], 
    time=Mon Jan 28 18:22:50 BRST 2019, queue=queue.active}]

我该怎么做?任何想法?另一个解决方案?

记住:我可以在Java代码中读取x-death [position] .count标头,但我想在交易所中解决。

0 个答案:

没有答案