ActiveMQ 重新传递策略 - 它是如何工作的?

ser*_*ces 7 activemq-classic jms

任何人都可以解释 ActiveMQ 重新交付策略实际上是如何工作的吗?它是在客户端还是服务器端工作?

假设我有一个重新传递策略,最多可以重新传递 10 分钟的消息,每次尝试之间间隔 30 分钟,那么失败的消息究竟在哪里?

假设消息现在失败并且必须在 30 分钟后重新发送,那么消息在哪里?

我看到同一个消费者在 30 分钟后收到消息。

我想知道 ActiveMQ 在哪里存储此消息 30 分钟。

如果我关闭了消费者或我的消费者崩溃了,我能在 30 分钟后恢复消息吗?

我浏览了这些 ActiveMQ 页面以了解重新交付策略,但没有找到任何信息:

http://activemq.apache.org/redelivery-policy.html http://activemq.apache.org/message-redelivery-and-dlq-handling.html

Pet*_*der 6

有两种类型的重新交付。典型的一种是您绑定到 ConnectionFactory 客户端的重新传递策略。代理不知道此设置中的重新传送,因为它由客户端处理,并且消息实际上在客户端上等待重新传送。然而,由于消息没有被客户端提交(或确认),代理不会删除它。因此,如果消息在 30 分钟后重新传送,但客户端应用程序在 10 分钟后关闭,则消息将在代理上重新可见。

还有通过插件的代理端重新交付。在这种情况下,经纪人处理重新交付。有利有弊,特别是您无法从客户端代码控制它 - 但经纪人管理员可以控制它。这意味着代理重新交付可以重新交付给不同的消费者,而客户端重新交付则不能。

在本页底部阅读有关代理重新交付的更多信息:http : //activemq.apache.org/message-redelivery-and-dlq-handling.html