我有一个本地ActiveMQ代理,它在一个不可靠的互联网连接上,还有一个可靠数据中心的远程ActiveMQ代理 . 我已经整理出“存储转发”设置,以便在Internet连接可用时将传出消息发送到远程代理 . 仅此一点很有效,但是当消息出站时 .
但是,现在我必须做相反的事情 . 这是场景:
-
远程ActiveMQ代理中出现新消息 . 消息将放入特定队列 .
-
几分钟后,本地ActiveMQ代理就可以使用Internet连接 .
-
然后,本地代理应该能够从远程代理中提取消息,并将其放在自己的本地队列中 .
-
本地消费者将能够看到该消息 .
所以从本质上讲,我需要本地代理成为远程队列的 subscribed consumer . 我查看了ActiveMQ文档但我在.xml配置文件中找不到任何关于如何执行此操作的内容 .
这是我应该寻找的吗?见:"ActiveMQ: JMS to JMS Bridge" .
任何建议和提示将受到高度赞赏 .
2 回答
使用activemq经纪人网络,您可以轻松地进行存储和转发 . (http://activemq.apache.org/networks-of-brokers.html)
如果你想从本地到远程,默认工作,如果你想远程与本地对话,你应该:
A)从远程到本地代理 Build 连接的方式与从本地到远程的连接方式相同(使用故障转移传输,以便经纪人在丢失和恢复连接后重新连接 . 我们一直这样做,而且效果很好)
B) Build 从本地到远程双工的连接(请查看上面链接中的双工uri参数) .
duplex false如果为true,则网络连接将用于生成AND Consume消息 . 当集线器位于防火墙后面时,这对于中心和辐射场景非常有用 .
例:
我使用JMS到JMS Bridge工作 . 请参阅下面的相关配置
我看到了另一个潜在的问题 . 在远程ActiveMQ代理上,“排队的消息”似乎只是停留在那里 . 我希望它们被自动删除 .