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

anu*_*ava 4 activemq-classic jms cluster-computing broker

我已经完全按照Bruce Snyder 的这篇文章建立了一个经纪人网络:

经纪人1:

<networkConnector name="amq1-nc"
uri="static:(tcp://localhost:61617)"
userName="system"
password="manager"
/>
Run Code Online (Sandbox Code Playgroud)

经纪人2:

<networkConnector name="amq2-nc"
uri="static:(tcp://localhost:61616)"
userName="system"
password="manager"
/>
Run Code Online (Sandbox Code Playgroud)

我在经纪人的配置 XML 的经纪人标签中都有 AdvisorySupport="false" 并启动了两个经纪人。

然后我使用以下命令启动了消费者:

ant consumer -Durl=tcp://0.0.0.0:61616
Run Code Online (Sandbox Code Playgroud)

最后使用以下命令启动生产者:

ant producer -Durl=tcp://0.0.0.0:61617
Run Code Online (Sandbox Code Playgroud)

所有生成的消息然后在端口 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 不能关闭,除非有一些我不知道的其他配置技巧。

Lau*_*res 5

文档说:

“警告:动态网络代理拓扑需要咨询消息,因为 NetworkConnectors 订阅咨询消息。在没有咨询的情况下,必须静态配置网络。

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

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