ActiveMQ Redelivery Policy和Blocking / Non-Blocking消费者设计

时间:2015-03-11 00:03:09

标签: java jms activemq

我有一个JMS队列,我收到几种类型的消息。所有消息都是对象消息。 我有Spring DMLC处理它们并尝试将它们传送到外部端点。

每种消息类型都与不同的端点相关联。

Example: 

Message A with type A to be delivered to endpoint A
Message B with type A to be delivered to endpoint A
Message C with type A to be delivered to endpoint A

Message D with type X to be delivered to endpoint X
Message E with type X to be delivered to endpoint X
Message F with type X to be delivered to endpoint X

如果其中一个端点出现故障,如果我使用Redelivery Policy设置长达2小时,我不希望其他端点的邮件被阻止。

假设消费者选择了一组消息传递给端点X,如果X关闭,我不想阻止为端点Y传递其他消息。

非阻塞消费者是否帮助我?

当我使用阻止使用者使用重新传递策略时,它会被阻塞,直到端点恢复正常或直到它重新传递并放弃将失败的消息丢弃到DLQ。

当外部端点只有一个时,阻止消费者工作得很好。如果它关闭,那么消费者会阻止这些消息,直到端点重新启动。

如果消息必须传递到一个或多个端点,我认为阻止消费者不会帮助我。

我没有找到任何非阻塞消费者的信息,我想知道它是否真的帮助我解决了我的问题。

1 个答案:

答案 0 :(得分:0)

老歌,但好东西。在AMQ连接工厂上使用nonBlockingRedelivery(true)