2

我有一个本地 ActiveMQ 代理,它位于不可靠的 Internet 连接上,还有一个位于可靠数据中心的远程 ActiveMQ 代理。我已经整理了一个“存储和转发”设置,以便在 Internet 连接可用时将传出消息发送到远程代理。仅此一项就很好用,但是当消息出站时。

但是,现在我必须做相反的事情。这是场景:

  1. 一条新消息出现在远程ActiveMQ 代理中。消息被放入特定队列。
  2. 几分钟后,本地ActiveMQ 代理可以使用 Internet 连接。
  3. 然后,本地代理应该能够从远程代理中提取消息,并将其放入自己的本地队列中。
  4. 然后,本地消费者将能够看到该消息。

所以本质上,我需要本地代理成为远程队列的订阅消费者。我查看了 ActiveMQ 文档,但在 .xml 配置文件中找不到任何关于如何执行此操作的信息。

这是我应该寻找的吗?请参阅:“ActiveMQ:JMS 到 JMS 桥”

任何建议和提示将不胜感激。

4

2 回答 2

4

借助 activemq 代理网络,您可以轻松地进行存储和转发。( http://activemq.apache.org/networks-of-brokers.html )

如果你想从本地到远程,默认工作,如果你想远程与本地对话,你应该:

A)以与从本地到远程相同的方式建立从远程到本地代理的连接(使用故障转移传输,以便代理在连接丢失和恢复后重新连接。我们一直这样做,效果很好)

B) 建立从本地到远程双工的连接(查看上面链接上的双工 uri 参数)。

如果为 true,则 duplex false,网络连接将用于生成和使用消息。当集线器位于防火墙等后面时,这对于集线器和辐射方案很有用。

例子:

 <networkConnector name="REMOTE" uri="static://(tcp://IP_OR_REMOTE_HOST:61616)" userName="system" password="manager" duplex="true"/>
于 2010-03-28T13:38:38.317 回答
1

我使用 JMS to 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
于 2010-02-01T14:04:50.003 回答