我正在尝试配置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标头,但我想在交易所中解决。