我有三個TomEE實例正在運行。我想用一個作爲'主'經紀人,並有兩個其他實例作爲客戶端連接到主。我希望客戶能夠相互發送/接收消息。如何配置TomEE嵌入式ActiveMQ代理的靜態網絡以便客戶端可以進行通信?
最大的要求是我必須使用靜態網絡;只需將客戶端tomee.xml
中的ServerUrl
指向主網址即可。
我已驗證我能夠靜態連接兩個容器並傳遞消息,但是當我介紹第三個容器(主人)時,消息停止從'客戶端A'流向'客戶端-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&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&useJmx=true
ServerUrl = tcp://127.0.0.1:61617
</Resource>
我的ActiveMQ控制檯顯示兩個客戶端都確實經由靜態網絡連接到主:
這裏是代理的圖根據HawtIO的佈局:
提前致謝。
是否'networkTTL'屬性需要在所有的三個設置,或者只是在主?我爲master配置了一個'activemq.xml',並且包含'uri =「static:(tcp://127.0.0.1:61615,tcp://127.0.0.1:61617)」networkTTL =「4」'在'networkConnector'節點上。仍然沒有c2通信。 –
我實際上可以在master的activemq.xml的networkConnector節點上使用'networkTTL'並設置'duplex =「true」'來實現這一點。我還必須在客戶端的tomee.xml資源配置中刪除靜態網絡,否則會出現有關名稱正在使用(來自雙工屬性)的奇怪錯誤。感謝您的協助! –
不錯。由於您可以控制單個代理的網絡連接,所以雙工選項非常棒。 –