当前位置: 首页 > 知识库问答 >
问题:

activemq:具有和不具有追溯模式的持久订阅之间的差异

国俊艾
2023-03-14

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

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

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

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

我真的没有看到具有和不具有追溯模式的持久订阅之间有任何太大区别。

请解释谢谢。

共有1个答案

南门正业
2023-03-14

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

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

因此,如果您使用的是持久订阅,则不必费心处理追溯性的东西,因为这是不必要的。而且不要指望追溯消费者总是工作,因为它只对存储在内存中的消息进行操作,所以如果代理重新启动,那么就没有什么可恢复的了。

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

 类似资料:
  • 我有一个持久订阅ActiveMQ的JMS代理,在WSO2 ESB V4.5.1和V4.7中运行良好 我试图在WSO2 ESB V4.8.0(里程碑3或4)中使用它,但没有成功 /repository/conf/axis2/axis2.xml中的JMS配置: -->我一直使用tcp://localhost:61616和nio://localhost:61616来实现sames效果 在ESB控制台中看

  • 我想配置一个持久主题,但我想配置Apache ActiveMQ Artemis将为该主题的非活动持久订阅服务器保留消息的时间。 例如,类似“为非活动的持久订阅服务器保存持久消息长达30秒”的内容。如果订阅服务器在30秒内没有变为活动状态,则当订阅服务器变为活动状态时,消息将不再可用。

  • 在我们的业务需求中,我们需要将更新传输到分布在全国各地的数千个客户端。问题是,许多这些客户端使用3G网络连接到我们,因此,发生了许多连接/断开连接...我们需要提供的更新是诸如“企业A不能再兑现”或“企业B能够再次兑现”之类的东西,我们正在考虑使用ActiveMQ持久主题来提供这些更新。我的理解是,一旦客户端连接到持久主题,即使他断开连接,每当他回来时,他都会在脱机时收到发送到该主题的消息。最大的

  • 我想知道这里是否有人能为我澄清以下问题。 假设我有一个主题,有5个持久订阅者。每个订户都是通过以下呼叫创建的(每个订户的名称明显不同): 因此,当我发布PARTY_ID = “123”的消息时,它将保留在主题中,直到所有5个持久订阅者都获得副本,对吗? 现在,假设我们有另外3个持久订阅者,消息选择器为“PARTY_ID='666'”。当我向主题发布“666”消息时,该消息会在3个持久“666”订阅

  • 我在这里对如何正确使用ActiveMQ有点困惑。 我想做的是 系统A向虚拟主题发送消息。然后系统B和C都使用来自同一虚拟主题的消息。系统B或C可能会脱机。所以当它们重新联机时,我需要它们接收脱机期间产生的所有消息。 到目前为止我所尝试的 我读过关于持久订阅者(http://activemq.apache.org/how-do-durable-queues-and-topics-work.html

  • 我正在努力做, 其中,父母一在模式S1中,父母二在模式S2中与儿童表在一起。 家长一号。JAVA 家长wo.java ChildTable.java 这里ParentTwo已经被持久化了,我有它的Id。我将只保留ParentOne以及不同模式的子表。当我这么做的时候,我会犯这样的错误。 rg.springframework.dao.:无法执行语句;SQL[n/a];约束[null];嵌套异常org