我在这里对如何正确使用ActiveMQ有点困惑。
我想做的是
系统A向虚拟主题发送消息。然后系统B和C都使用来自同一虚拟主题的消息。系统B或C可能会脱机。所以当它们重新联机时,我需要它们接收脱机期间产生的所有消息。
到目前为止我所尝试的
我读过关于持久订阅者(http://activemq.apache.org/how-do-durable-queues-and-topics-work.html 和虚拟主题/队列和持久性)。这似乎符合我的问题描述,并且在进行了一些实现之后,一切似乎都按照我最初想要的方式工作。
是什么造成了混乱
然后我读了订阅恢复策略(http://activemq.apache.org/subscription-recovery-policy.html)。这是我应该配置的还是我完全误解了什么?例如,如果我想存储指定数量的邮件,我应该配置“固定计数”订阅“恢复策略,
还是应该查看一些挂起的消息限制策略
?
第一个问题是,当虚拟主题的要点是发布到主题(例如虚拟主题 FOO)然后在匹配的筛选器值(例如消费者.A.VirtualTopic.FOO)上创建队列使用者时,为什么要在虚拟主题的主题部分使用持久主题订阅?
关于恢复策略,它们仅适用于与持久主题订阅不同的主题订阅。对于普通的旧主题订阅,发送到主题的消息仅在该订阅的代理中保存,只要它连接,一旦它删除,该订阅的所有消息都将被删除。订阅恢复策略所做的是创建一个可配置的缓存,允许创建主题订阅并重播发送到匹配主题的消息。这对于持久主题订阅是不必要的,因为每当订阅者离线时,发送到其订阅的主题的消息都会存储在代理消息存储中。
恢复策略只能在少数边缘情况下混合到持久主题订阅中,例如发送到标记为非持久的主题的消息,或者在第一次订阅时,可以从内存中恢复一些过去的消息,并将其作为一种入门,播放到新的持久订阅中,但这就是它们在持久情况下的优势所在。
无论如何,您最好通过创建队列使用者来按预期方式使用虚拟主题,因为与持久主题订阅相比,此机制具有许多优势。有关虚拟目标的 ActiveMQ 文档解释了所有这些内容。
我需要为ActiveMQ创建一个主题和一个持久订阅者,我的问题是我不知道在哪里指定它。我可以创建主题并使用消息,但是当我关闭订阅者然后继续发送消息并再次打开订阅者时,它不会读取它们。 这是我目前掌握的情况: 发送消息: 接收消息: 我已经阅读了这篇文章,我明白我需要创建持久订阅者。 我也读过spring文档 我认为它与(我没有实现,我使用的是默认配置)有关,文档显示: 但是我似乎找不到在哪里创建持
在我们的业务需求中,我们需要将更新传输到分布在全国各地的数千个客户端。问题是,许多这些客户端使用3G网络连接到我们,因此,发生了许多连接/断开连接...我们需要提供的更新是诸如“企业A不能再兑现”或“企业B能够再次兑现”之类的东西,我们正在考虑使用ActiveMQ持久主题来提供这些更新。我的理解是,一旦客户端连接到持久主题,即使他断开连接,每当他回来时,他都会在脱机时收到发送到该主题的消息。最大的
我正在尝试编写一个基本的 ActiveMQ 客户端来侦听一个主题。我正在使用Spring启动活动MQ。我有一个基于各种教程构建的实现,它使用默认Jms列表容器工厂,但是我在使其正常工作时遇到了一些问题。 一切都很好,直到我尝试获得一个持久的订阅。当我这样做时,我发现在容器工厂中设置了客户机id,我得到了一个关于如何在共享连接上设置客户机id的错误。 <code>原因:共享连接的代理不支持setCl
我想配置一个持久主题,但我想配置Apache ActiveMQ Artemis将为该主题的非活动持久订阅服务器保留消息的时间。 例如,类似“为非活动的持久订阅服务器保存持久消息长达30秒”的内容。如果订阅服务器在30秒内没有变为活动状态,则当订阅服务器变为活动状态时,消息将不再可用。
目前,我已经开始使用ActiveMQ处理JMS主题。我已经通过JAVA代码(如下所述)创建了发布者和持久订阅者,并且在订阅者端也收到了消息。 Publisher.Java 订阅者.java 我对以下主题有一些疑问, 如何检查有多少订阅者使用 Java JMS 在主题中主动查找消息? 如何从主题中获取活动和持久订阅者列表? 我们是否可以删除主题中发布的消息? 在这些情况下帮助我。 提前致谢。
我们有一个ActiveMQ代理,它使用JMS、AMQP和MQTT从非常不同的客户端连接到。出于某种原因,我们还没有弄清楚一组特定的MQTT客户端经常(不总是)持久订阅。这是一个测试环境,客户端经常被添加和删除,后者有时通过拔掉插头或重新启动嵌入式设备,因此它们无法正确取消订阅。效果(IIUC)是代理为可能再也见不到的设备堆积“离线持久订阅”(我可以在超文本传输协议下看到这些),永远保留关于这些主题