4

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

经纪人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 上的消费者永远不会收到消息。

在没有启用咨询支持的情况下,代理网络是否会停止转发消息?我认为这在最近的版本中已修复。(我正在使用 activemq 5.4.2 版本)。

ActiveMQ 静态代理网络是否停止转发消息咨询支持是否已禁用?

更新: 我在使用 AdvisorySupport="false" 和 staticallyIncludedDestinations 时遇到了问题。

我们将 JMS 用于大部分请求-响应,如下所述:http: //activemq.apache.org/how-should-i-implement-request-response-with-jms.html

我们在生产者端使用了一个临时队列,以便能够接收消费者的响应,并且由于 staticallyIncludedDestinations 不能在其中包含这些临时队列名称,因此,当顾问支持被禁用时,所有生产者都无法接收来自客户端的响应。

我得出的结论是,对于我们的场景咨询支持不能关闭,除非有一些我不知道的其他配置技巧。

4

1 回答 1

5

文档说:

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

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

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

于 2011-03-18T15:55:08.660 回答