我有一个 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
如果其中一个端点出现故障,并且我使用重新投递策略设置长达 2 小时,我不希望发往其他端点的消息被阻止。
假设消费者选择了一组要传递到端点 X 的消息,并且如果 X 发生故障,我不想阻止为端点 Y 传递其他消息。
非阻塞消费者在这里对我有帮助吗?
当我使用重新传递策略来阻止消费者时,它会被阻止,直到端点恢复正常或直到它重新传递并放弃将失败的消息发送到 DLQ。
当外部端点只有一个时,阻止消费者效果非常好。如果它出现故障,那么消费者会阻止这些消息,直到端点恢复为止。
如果消息必须传递到 1 个或多个端点,我认为阻塞消费者对我没有帮助。
我没有找到任何关于非阻塞消费者的信息,我想知道它是否真的可以帮助我解决我的问题。
最佳答案
老但好东西。在 AMQ 连接工厂上使用 nonBlockingRedelivery(true)
关于java - ActiveMQ 重新交付策略和阻塞/非阻塞消费者设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28976299/