在没有启用咨询支持的情况下,代理的 activemq 静态网络是不是会停止转发消息?
Posted
技术标签:
【中文标题】在没有启用咨询支持的情况下,代理的 activemq 静态网络是不是会停止转发消息?【英文标题】:Does activemq static network of broker stop forwarding messages without advisorySupport enabled?在没有启用咨询支持的情况下,代理的 activemq 静态网络是否会停止转发消息? 【发布时间】:2011-07-17 21:52:19 【问题描述】:我已经按照 Bruce Snyder 的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 的代理标记中都有 advisorsupport="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 不能在其中包含这些临时队列名称,因此,当顾问支持被禁用时,所有生产者都无法接收来自客户端的响应.
我得出的结论是,对于我们的场景咨询支持不能关闭,除非有一些我不知道的其他配置技巧。
【问题讨论】:
【参考方案1】:文档是这样的:
“警告: 咨询信息是必需的 动态网络代理拓扑为 NetworkConnectors 订阅 咨询信息。在缺少...之下 咨询,网络必须是 静态配置。
咨询消息告诉节点远程消费者在哪里,因此将传入消息发送到哪里。没有它们,你必须自己配置这些东西。
文档中有一个示例:http://activemq.apache.org/networks-of-brokers.html
【讨论】:
@Laures:我已多次阅读该文档,现在非常清楚动态网络代理确实需要启用咨询支持。但是,如果您再次阅读我的问题和此页面的标题,它会清楚地表明它不适用于 “静态代理网络”。 非常感谢劳瑞斯。 Gary Tully 今天还回复了我在 activemq 邮件列表上的帖子,答案与代理配置需要的相同:<staticallyIncludedDestinations> <queue physicalName="TEST.FOO"/> </staticallyIncludedDestinations>
inside networkConnector
标签。
我发现关闭咨询支持的另一个问题,请参阅上面的更新。
@Laures:我也想到了这个技巧,但不幸的是,这些临时队列是这样创建的:Destination tempDest = session.createTemporaryQueue();
这并不能让我们控制这些临时队列的名称,因此我们赢了'不能使用<queue physicalName="dynamic.>"/>
指令。
@Laures:使用命名目的地的问题是同一生产者的多个实例将使用相同的名称(除非我们有每个生产者实例名称;这是一个操作风险)。如果使用相同的名称,那么我们将不得不使用由于各种原因我们有意识地试图避免的消息选择器。 activemq 邮件列表上有一个关于这个问题的线程,我正在与 Gary Tully 讨论这个问题:activemq.2283324.n4.nabble.com/…以上是关于在没有启用咨询支持的情况下,代理的 activemq 静态网络是不是会停止转发消息?的主要内容,如果未能解决你的问题,请参考以下文章