ActiveMQ 重新交付策略 - 它是如何工作的?

ActiveMQ Redelivery Policy - How does it work?

谁能解释一下 ActiveMQ 重新传递策略的实际工作原理? 它是在客户端还是服务器端工作?

假设我有一个重新传递策略,每次重新传递消息的时间间隔为 30 分钟,最多 10 分钟,那么失败的消息到底在哪里?

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

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

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

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

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

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

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

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

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