首页 文章

如何让本地ActiveMQ代理“镜像”远程ActiveMQ代理上的队列?

提问于
浏览
2

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

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

  • 远程ActiveMQ代理中出现新消息 . 消息将放入特定队列 .

  • 几分钟后,本地ActiveMQ代理就可以使用Internet连接 .

  • 然后,本地代理应该能够从远程代理中提取消息,并将其放在自己的本地队列中 .

  • 本地消费者将能够看到该消息 .

所以从本质上讲,我需要本地代理成为远程队列的 subscribed consumer . 我查看了ActiveMQ文档但我在.xml配置文件中找不到任何关于如何执行此操作的内容 .

这是我应该寻找的吗?见:"ActiveMQ: JMS to JMS Bridge" .

任何建议和提示将受到高度赞赏 .

2 回答

  • 3

    使用activemq经纪人网络,您可以轻松地进行存储和转发 . (http://activemq.apache.org/networks-of-brokers.html

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

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

    B) Build 从本地到远程双工的连接(请查看上面链接中的双工uri参数) .

    duplex false如果为true,则网络连接将用于生成AND Consume消息 . 当集线器位于防火墙后面时,这对于中心和辐射场景非常有用 .

    例:

    <networkConnector name="REMOTE" uri="static://(tcp://IP_OR_REMOTE_HOST:61616)" userName="system" password="manager" duplex="true"/>
    
  • 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
    

相关问题