jms - 代理的 activemq 静态网络是否停止转发消息而未启用advisorySupport?

标签 jms activemq cluster-computing broker

我已经完全按照 this post 建立了一个经纪人网络布鲁斯·斯奈德:
经纪人1:

<networkConnector name="amq1-nc"
uri="static:(tcp://localhost:61617)"
userName="system"
password="manager"
/>
经纪人2:
<networkConnector name="amq2-nc"
uri="static:(tcp://localhost:61616)"
userName="system"
password="manager"
/>
我在经纪人的配置 XML 的经纪人标签中都有 AdvisorySupport="false"并启动了两个经纪人。
然后我使用以下命令启动了消费者:
ant consumer -Durl=tcp://0.0.0.0:61616
最后使用以下命令启动生产者:
ant producer -Durl=tcp://0.0.0.0:61617
然后所有生成的消息在运行在端口 61617 上的代理上进入挂起状态,而在端口 61616 上连接的消费者永远不会收到消息。
经纪人网络是否会在未启用advisorySupport 的情况下停止转发消息?我认为这是在最近的版本中修复的。 (我使用的是 activemq 5.4.2 版本)。
代理的 ActiveMQ 静态网络是否停止转发消息advisorySupport 被禁用?
更新:
我在使用advisorySupport="false"和staticallyIncludedDestinations 时遇到了问题。
我们主要使用 JMS 进行请求-响应,如下所述:http://activemq.apache.org/how-should-i-implement-request-response-with-jms.html
我们在生产者端使用了一个临时队列,以便能够接收来自消费者的响应,并且由于 staticallyIncludedDestinations 不能在其中包含这些临时队列名称,因此,当禁用了 advisorSupport 时,所有生产者都无法从客户端接收响应。
我得出的结论是,对于我们的方案,advisorySupport 不能关闭,除非有一些我不知道的其他配置技巧。

最佳答案

文档说:

"Warning: Advisory messages are required for dynamic network broker topologies as NetworkConnectors subscribe to advisory messages. In the absence of advisories, a network must be statically configured.



咨询消息告诉节点远程消费者在哪里,因此在哪里发送传入消息。没有它们,您必须自己配置这些东西。

文档中有一个示例如何做到这一点:http://activemq.apache.org/networks-of-brokers.html

关于jms - 代理的 activemq 静态网络是否停止转发消息而未启用advisorySupport?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5348065/

相关文章:

java - Jmeter:在发布 JMS 消息时对多个线程使用相同的 ConnectionFactory

ruby - 为什么 STOMP、ActiveMQ 和 Vagrant 不能在我的系统上运行?

java - JMS关闭客户端资源(MessageConsumer、Session、Connection)

c# - 使用 C# 和 Apache NMS 的 ActiveMQ - 对队列中的消息进行计数

java - ActiveMQ 示例显示客户端-服务器 2 路通信?

mysql - 将不同 mysql 服务器的不同模式链接到一台 mysql 服务器中,以便他可以管理查询

java - 以编程方式配置 Akka ClusterRouting

azure - 您无法在运行 Databricks Basic 的集群上运行笔记本作业

java - Qpid Java 6.0.1 或 Qpid JMS 和 Qpid Proton

spring - 将 RedeliveryPolicy 注入(inject) Spring 启动 ActiveMQ