使用和不使用追溯模式的持久订阅之间的 activemq 差异

use*_*360 4 activemq-classic

我刚刚开始使用activemq,我有一个关于追溯消费者的问题,为了启用这个功能,你需要有一个持久的订阅。但是在主题上启用和不启用追溯的持久订阅有什么区别?activemq 文档说。

http://activemq.apache.org/retroactive-consumer.html 追溯消费者只是一个常规的 JMS 主题消费者,它表示在订阅开始时,每次尝试都应该用于及时返回并发送任何旧消息(或在该主题上发送的最后一条消息),消费者可能错过了。

关于追溯消费者。对于持久订阅者:

http://activemq.apache.org/how-do-durable-queues-and-topics-work.html ...因此对于持久主题订阅,JMS 提供程序需要能够在其关闭时以及稍后识别 S将来重新连接,因此它可以知道在未运行时向其发送哪些消息

我真的没有看到使用和不使用追溯模式的持久订阅之间有什么大的区别。

请解释谢谢。

Tim*_*ish 5

追溯消费者其实不是你一个持久订阅做一些事情。持久主题订阅者将所有发送给他们的标记为持久性的消息保存在数据库中,直到他们下次连接时才会发送这些消息。

对于非持久主题订阅,您可以配置订阅恢复策略并将消费者标记为可追溯。当消费者连接时,代理将根据您配置的恢复策略将内存中的任何主题消息发送给消费者。

因此,如果您使用的是持久订阅,请不要打扰追溯性的东西,因为它没有必要。并且不要指望追溯消费者始终工作,因为它只对存储在内存中的消息进行操作,因此如果代理重新启动,则无法恢复。

在许多情况下,更好的选择是使用虚拟主题,因为它会为每个消费者分配一个队列,消息将存储在队列中,即使消费者离线一段时间。