【问题标题】:ActiveMQ network connectors syntaxActiveMQ 网络连接器语法
【发布时间】:2021-11-14 04:02:01
【问题描述】:

ActiveMQ 文档不是那么清楚,关于 network connector syntax,而且不仅如此。

例如文档指出,要创建一个静态代理网络,请使用static 协议:

<networkConnectors>
   <networkConnector uri="static:(tcp://<host1>:<port1>,tcp://<host2>:<port2>)"/>
</networkConnectors>

如果你想使用failover,你不能使用:

<networkConnectors>
   <networkConnector uri="failover:(tcp://<host1>:<port1>,tcp://<host2>:<port2>)"/>
</networkConnectors>

但是

<networkConnectors>
   <networkConnector uri="static:failover:(tcp://<host1>:<port1>,tcp://<host2>:<port2>)"/>
</networkConnectors>

如上所述here

masterslave 协议似乎不适用于 5.10.2 及更高版本。

如果你也想设置一些属性怎么办?

<networkConnectors>
   <networkConnector uri="static:failover:(tcp://<host1>:<port1>,tcp://<host2>:<port2>)?useExponentialBackOff=false"/>
</networkConnectors>

可以,但如果您尝试在uri 中添加多个:

<networkConnectors>
   <networkConnector uri="static:failover:(tcp://<host1>:<port1>,tcp://<host2>:<port2>)?useExponentialBackOff=false&maxReconnectDelay=3000"/>
</networkConnectors>

您的代理不会启动。

如何在uri 中添加更多属性?我还尝试了;, 作为分隔符,但没有运气。有什么想法吗?

【问题讨论】:

    标签: activemq connector


    【解决方案1】:

    根据 Matt Pavlovich 的评论,在 XML 文件中您应该使用 &amp;amp; 而不是 &amp;

    <networkConnectors>
       <networkConnector uri="static:failover:(tcp://<host1>:<port1>,tcp://<host2>:<port2>)?useExponentialBackOff=false&amp;maxReconnectDelay=3000"/>
    </networkConnectors>
    

    <networkConnectors>
       <networkConnector uri="masterslave:(tcp://<host1>:<port1>,tcp://<host2>:<port2>)?useExponentialBackOff=false&amp;maxReconnectDelay=3000"/>
    </networkConnectors>
    

    如果您使用 ActiveMQ 的最新版本之一。

    【讨论】:

      【解决方案2】:

      网络连接器意味着“故障转移”。您根本不应该使用故障转移:uri。 Posta 的文章已经过时了。

      【讨论】:

      • 这是不正确的,至少对于版本 5.10.2。当您使用static:failover 时,如果它找到第一个代理,它将不会尝试连接到第二个代理,等等,只有当第一个代理出现故障时。如果您只使用static,那么它会尝试连接到两台服务器。
      • 不推荐使用故障转移:在网络连接器中。它“起作用”是因为您可以实现某些行为。但是,“主从:”uri 是专门为网络连接器提供的,以解决网络连接器与客户端故障转移的需求:uri。 5.10.2 已经超过 6 年了 - masterslave: 后来添加,但支持与“静态”相同的 uri 参数。尝试 5.16.3 并在它不起作用时共享日志输出
      • 感谢您的回复马特,但是,目前我们坚持使用 5.10.2;一旦我们升级到更高版本,我们可以尝试masterlave。不过,关于uri 中的属性,您对问题的另一部分有答案吗?
      • 当使用 XML(不是 activemq.xml 特定的)时,您必须将 '&' 转义为 '&'。附加参数去 ?foo=bar&doh=ray&me=fa&amps;so=la
      • 谢谢马特。就是这样。我在 XML 文件中忘记了这一点。 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      • 2013-03-18
      • 2015-03-22
      • 2018-08-08
      • 1970-01-01
      • 2011-06-18
      • 1970-01-01
      相关资源
      最近更新 更多