2010-02-01 80 views
2

我有一個本地ActiveMQ代理,它位於不可靠的Internet連接上,也是可靠數據中心中的遠程ActiveMQ代理。我已經整理出了一個「存儲轉發」設置,以便在Internet連接可用時將傳出的消息發送到遠程代理。這一點很好,但當消息傳出時。如何讓本地ActiveMQ代理「鏡像」遠程ActiveMQ代理上的隊列?

但是,現在我必須做相反的事情。下面是這種情況:

  1. 出現在遠程 ActiveMQ代理一個新的消息。該消息被放入特定的隊列中。
  2. 幾分鐘後,Internet連接將變爲可用於本地 ActiveMQ代理。
  3. 本地代理應該能夠從遠程代理拉取消息,並將其置於其自己的本地隊列中。
  4. 本地消費者將能夠看到該消息。

所以在本質上,我需要的本地券商成爲訂閱消費到遠程隊列。我已經瀏覽了ActiveMQ文檔,但是我還找不到有關如何在.xml配置文件中執行此操作的任何信息。

這是我應該找的?參見:"ActiveMQ: JMS to JMS Bridge"

任何意見和建議將不勝感激。

回答

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 
+0

評論自己:在遠程代理 ActiveMQ的控制面板說:4級的消息排入隊列。 8條消息出列。我想這畢竟是好的。我擔心記憶會填滿消息,但看起來實際上是將它們排隊。 – 2010-02-01 14:38:49

3

隨着經紀人的activemq網絡,您可以輕鬆地進行存儲和轉發。 (http://activemq.apache.org/networks-of-brokers.html

如果從本地到遠程想要的,默認的工作,如果你想遠程頂嘴地方,你應該:

A)建立從遠程到本地代理的連接從本地到遠程使用相同的方式(使用故障轉移傳輸,以便經紀人在丟失和恢復連接後重新連接。我們一直這樣做,並且它工作得很好)

B)使您已經從本地到遠程雙工(查看上面鏈接中的duplex uri參數)。

duplex如果爲true,則網絡連接將用於產生AND消費消息。當集線器位於防火牆後面時,這對於中心和分支場景很有用。

實施例:再次

<networkConnector name="REMOTE" uri="static://(tcp://IP_OR_REMOTE_HOST:61616)" userName="system" password="manager" duplex="true"/>