如何配置TomEE嵌入式ActiveMQ代理的静态网络,以便客户端可以进行通信?

时间:2015-10-20 17:31:49

标签: activemq tomee

我有三个TomEE实例正在运行。我想用一个作为主人的'代理,并有另外两个实例作为客户端连接到主服务器。我希望客户能够相互发送/接收消息。

最大的要求是我必须使用静态网络;只需将ServerUrl指向客户&#39; <{1}}到主网址不是一个选项。

我已经验证我能够静态连接两个容器并传递消息,但是当我引入第三个容器(主服务器)时,消息不再从客户端A&#39流出;到&#39;客户B&#39;

掌握tomee.xml

tomee.xml

Client-A tomee.xml

<Resource
    id="ra/activemq"
    type="ActiveMQResourceAdapter">
    BrokerXmlConfig = broker:(tcp://127.0.0.1:61616,network:static:(tcp://127.0.0.1:61615,tcp://127.0.0.1:61617))/tomeeActiveMq?useJmx=true
    ServerUrl = tcp://127.0.0.1:61616
</Resource>

Client-B tomee.xml

<Resource
    id="ra/activemq"
    type="ActiveMQResourceAdapter">
    BrokerXmlConfig = broker:(tcp://127.0.0.1:61615,network:static:tcp://127.0.0.1:61616)/server0?useJmx=true&amp;persistent=false
    ServerUrl = tcp://127.0.0.1:61615
</Resource>

我的ActiveMQ控制台显示两个客户端确实通过静态网络连接到主服务器:

enter image description here

以下是根据HawtIO的代理布局图:

Diagram of broker layout from HawtIO

提前致谢。

1 个答案:

答案 0 :(得分:1)

对于3个以上的代理网络,您需要将set format y '%.0f' 选项设置为大于1的值,这是默认值。 TTL选项设置消息可以达到的网络代理数量的最大限制。

因此,默认情况下,您可以在同一网络中与c1&lt; - &gt; master和c2&lt; - &gt; master进行通信,但不能与c1&lt; - &gt; c2进行通信。

不知道如何通过资源适配器中的URI传递该选项。

More about the network of brokers configuration