4

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

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

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

http://activemq.apache.org/how-do-durable-queues-and-topics-work.html ...因此对于持久主题订阅,JMS 提供者需要能够在其关闭时识别 S on in the future 重新连接,因此它可以知道在未运行时要发送给它的消息

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

请解释谢谢。

4

1 回答 1

6

追溯消费者实际上不是您对持久订阅所做的事情。持久主题订阅者将发送给他们的所有标记为持久的消息保存在数据库中,直到他们下次连接,然后这些消息被分派。

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

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

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

于 2013-09-09T15:17:24.303 回答