有人可以解释一下ActiveMQ Redelivery Policy如何实际运作吗? 它是在客户端还是服务器端工作?
我们说我有一个重新发送政策,可以在每次尝试之间以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
答案 0 :(得分:2)
有两种类型的重新传递。典型的一个是绑定到ConnectionFactory客户端的重新传递策略。经纪人不知道此设置中的重新传递,因为它由客户端处理,并且消息实际上在客户端等待重新传递。但是,由于客户端未提交(或已确认)消息,因此代理不会将其删除。因此,如果邮件在30分钟内完成重新发送,但客户端应用程序在10分钟后关闭,则该消息将在代理上显示。
还有通过插件进行经纪人方面的重新发送。在这种情况下,经纪人处理重新交付。有利有弊,特别是你无法从客户端代码控制它 - 但是经纪人管理员可以控制它。这意味着经纪人重新发送可以重新发送给不同的消费者,而客户端重新发送则不能。
在本页底部阅读有关经纪人重新发送的更多信息: http://activemq.apache.org/message-redelivery-and-dlq-handling.html