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

活跃的 MQ 代理网络不转发消息

柯鸿振
2023-03-14

我有两个 ActiveMQ 代理(A 和 B),它们被配置为存储转发网络。当代理 B 上连接了使用者并且创建者将消息发送到 A 时,它们可以完美地将消息从 A 转发到 B。问题在于,当使用者被杀死并重新连接到 A 时,B 上排队的消息(它们是从 A 转发的)不会转发回使用者连接到的 A。即使我向 B 发送新消息,所有消息都卡在 B 上,直到我重新启动代理。我尝试在代理网络连接器上设置网络TTL=“4”和双工=“true”,但它不起作用。

共有2个答案

薛望
2023-03-14

你能提供更多关于经纪人A和B配置的信息,以及你试图实现的目标吗?

在我看来,你可以通过建立一个经纪人网络(a和B)来实现你想要的,生产者只连接到一个,消费者连接到另一个。只要另一个代理对消息发送到的目的地具有活动订阅,则消息将自动传输到另一代理。

如果您不确定它产生的后果(它往往会导致不需要的消息循环),我不建议更改networkTTL。

裘禄
2023-03-14

迟到的答案,但希望这将来帮助其他人。

消息被卡在B中,因为默认情况下,AMQ不允许将消息发送回先前已交付的代理。在正常情况下,这会防止消息在类似网格的网络拓扑中循环而不被传递,但在故障转移情况下,它会导致消息卡在一个代理上,无法到达所有消费者所在的代理。

如果当前代理由于没有使用者连接到某个代理而陷入死胡同,要允许消息返回到代理,应使用 replayWhenNoConsumers=true 来允许将卡在 B 上的消息转发回 A。

配置选项、您可能希望与其结合使用的一些设置以及使用它时的一些注意事项,http://activemq.apache.org/networks-of-brokers.html 的“卡住的消息(版本 5.6)”部分中进行了介绍,http://tmielke.blogspot.de/2012/03/i 队列上有消息,但它们没有.html,以及 https://issues.apache.org/jira/browse/AMQ-4465。确保您可以承受这些更改的副作用(例如,在代理到代理网络连接之间可能重复传递其他消息)。

 类似资料:
  • 长时间侦听者,堆栈溢出:)上的首次调用者 我有一个具有生产者和消费者的ActiveMQ代理。创建器正在连接到活动 MQ 代理。有一个使用者附加到同一个代理。当我使用此设置发送消息 P - 现在我添加另一个代理来创建代理网络,并使用以下配置发送消息:P- 附加信息: P和B1在同一个数据中心,DC1。 B2 和 C 位于同一数据中心 DC2 中。 DC1和DC2是同一海岸上的两个不同数据中心,pin

  • 我是使用ActiveMQ的新手,正在试图理解经纪人网络是如何工作的。我已经阅读了activemq文档,并浏览了互联网上的一些文章,如http://www . jakubkorab . net/2011/11/understanding-ActiveMQ-broker-networks . html 我在本地Windows桌面上设置了以下内容。有2台tomcat服务器分别运行在8080和9080上,

  • 我们设置了一个中心辐射型拓扑,其中包含两个用于冗余的集线器。连接到网络的所有节点都具有到两个集线器的静态网络连接。 如果我们为另一个辐条产生的特定主题提供一个消费者,然后放弃其中一个集线器,有时消费者会停止获取数据。如果关闭hub A导致消费者停止接收数据,则进行备份将恢复消费者的订阅源。降低B对饲料没有影响。哪个枢纽可能影响消费者,这似乎是不一致的。 我们期望,对于代理网络,只要生产者在网络上并

  • 我在网络设置中有两个ActiveMQ代理。客户端配置为randomize=true,并且能够良好连接。但是,消息不会从一个代理转发到另一个代理,而是保留在队列中。例如,我有一个特定的队列,它有多个生产者和一个消费者。如果我查看一个消费者连接到的代理上的队列,所有消息都会立即退出队列。但是,在另一个代理上,消息会排队,不会被排出。 下面列出的是我为两个代理设置的网络连接器和传输连接器。我尝试过添加双

  • 我有两个ActiveMQ代理(A和B),它们被配置为具有静态列表的代理网络集群。 正常的消息消耗和存储转发按预期工作。也就是说:连接到代理B的消费者将拾取A上未连接消费者的消息。 我确实看到,咨询信息并非如此。在我当前的设置中,我有一个应用程序通过连接到advisory来监控DLQ:。当消息到达DLQ时,我需要它来触发某些操作。 在测试集群时,我没有看到任何针对代理A上的DLQ消息的建议消息传到我

  • 我正在尝试建立一个简单的 ActiveMQ 代理网络。我有2台机器,比如A和B。 在A的< code>activemq.xml文件中,我放置了networkConnector,它具有指向机器b的URI。在A的日志中,显示它连接到了b 我有一个向A发送消息的应用程序。在ActiveMQ的网络控制台的网络选项卡中,我可以看到我的消息正在排队和出队(我认为这意味着消息被转发到机器B)。 我的问题是消息在