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

How can I configure a static network of TomEE embedded ActiveMQ brokers so that clients can communicate?

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

最大的要求是我必须使用静态网络;简单地将客户端 tomee.xml 中的 ServerUrl 指向主 URL 不是一个选项。

我已经验证我能够静态连接两个容器并传递消息,但是当我引入第三个容器(主容器)时,消息停止从 'Client-A' 流向 'Client-B'

大师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>

客户端-A 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>

客户端-B tomee.xml:

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

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

这是根据 HawtIO 的代理布局图:

提前致谢。

对于 3+ 代理网络,您需要将 networkTTL 选项设置为大于 1 的值,这是默认值。 TTL 选项设置了一条消息可以到达的网络代理的最大限制。

因此,默认情况下,您可以在同一网络中通信 c1<->master 和 c2<->master,但不能通信 c1<->c2。

虽然不确定如何在资源适配器中通过 URI 传递该选项。

More about the network of brokers configuration