我有一个本地ActiveMQ代理,它在一个不可靠的互联网连接上,还有一个可靠数据中心的远程ActiveMQ代理。我已经整理出“存储转发”设置,以便在Internet连接可用时将传出消息发送到远程代理。仅此一点很有效,但是当消息出站时。
然而,现在我必须做相反的事情。这是场景:
所以从本质上讲,我需要本地代理成为远程队列的订阅消费者。我查看了ActiveMQ文档但我在.xml配置文件中找不到任何关于如何执行此操作的内容。
这是我应该寻找的吗?请参阅:"ActiveMQ: JMS to JMS Bridge"。
任何建议和提示都将受到高度赞赏。
答案 0 :(得分:3)
使用activemq经纪人网络,您可以轻松地进行存储和转发。 (http://activemq.apache.org/networks-of-brokers.html)
如果你想从本地到远程,默认有效,如果你想远程与本地对话,你应该:
A)从远程到本地代理建立连接的方式与从本地到远程的连接方式相同(使用故障转移传输,以便经纪人在丢失和恢复连接后重新连接。我们一直这样做,它可以正常工作大)
B)建立从本地到远程双工的连接(请查看上面链接中的双工uri参数)。
duplex false如果为true,则网络连接将用于生成AND Consume消息。当集线器位于防火墙后面时,这对于中心和辐射场景非常有用
示例:
<networkConnector name="REMOTE" uri="static://(tcp://IP_OR_REMOTE_HOST:61616)" userName="system" password="manager" duplex="true"/>
答案 1 :(得分:1)
我使用JMS到JMS Bridge。请参阅下面的相关配置。
我看到了另一个潜在的问题。在远程ActiveMQ代理上,“排队的消息”似乎只是停留在那里。我希望它们被自动删除。
... snip snip
<jmsBridgeConnectors>
<jmsTopicConnector
outboundTopicConnectionFactory="#remoteFactory">
<inboundTopicBridges>
<inboundTopicBridge inboundTopicName="jms/TestTopic1" localTopicName="jms/TestTopicResult" />
</inboundTopicBridges>
</jmsTopicConnector>
</jmsBridgeConnectors>
</broker>
<bean id="remoteFactory"
class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://x.x.x.x:61616" />
</bean>
... snip snip