java - ActiveMQ 重新交付策略和阻塞/非阻塞消费者设计

标签 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

如果其中一个端点出现故障,并且我使用重新投递策略设置长达 2 小时,我不希望发往其他端点的消息被阻止。

假设消费者选择了一组要传递到端点 X 的消息,并且如果 X 发生故障,我不想阻止为端点 Y 传递其他消息。

非阻塞消费者在这里对我有帮助吗?

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

当外部端点只有一个时,阻止消费者效果非常好。如果它出现故障,那么消费者会阻止这些消息,直到端点恢复为止。

如果消息必须传递到 1 个或多个端点,我认为阻塞消费者对我没有帮助。

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

最佳答案

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

关于java - ActiveMQ 重新交付策略和阻塞/非阻塞消费者设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28976299/

相关文章:

java - 链接列表 - 删除索引处的元素

int-jms :outbound-channel-adapter from spring integration 的 Java 配置

spring - 使用 Spring、JOOQ、Postgres 和 ActiveMQ 时无回滚

java - 当显式确认消息时,ActiveMQ 消费者是否需要打开?

java - 每行打印 10 个数字

java - 如何使用 apache poi 获取单元格的背景颜色?

Oracle AQ 相同的消息被传递两次

java - JmsTemplate - 定义每个队列的并发性?

java - 在 TLS1.2 上创建 ActiveMQ 连接

java - 为 ProcessBuilder 设置工作目录不起作用