2

信頼できないインターネット接続上にあるローカル ActiveMQ ブローカーと、信頼できるデータセンターにリモート ActiveMQ ブローカーがあります。インターネット接続が利用可能になったときに送信メッセージがリモート ブローカーに送信されるように、「ストア アンド フォワード」セットアップを既に整理しました。それだけでもうまく機能しますが、メッセージがアウトバウンドの場合です。

しかし、今は逆のことをしなければなりません。シナリオは次のとおりです。

  1. リモートActiveMQ ブローカーに新しいメッセージが表示されます。メッセージは特定のキューに入れられます。
  2. 数分で、ローカルのActiveMQ ブローカーがインターネット接続を利用できるようになります。
  3. その後、ローカルブローカはリモートブローカからメッセージを取得し、独自のローカル キューに配置できるようになります。
  4. ローカルのコンシューマは、メッセージを見ることができます。

したがって、本質的には、ローカル ブローカーがリモート キューのサブスクライブされたコンシューマーになる必要があります。ActiveMQ のドキュメントを調べましたが、.xml 構成ファイルでこれを行う方法についてはまだ何も見つかりません。

これは私が探しているものですか?「ActiveMQ: JMSからJMSへのブリッジ」を参照してください。

アドバイスやヒントをいただければ幸いです。

4

2 に答える 2

4

ブローカーの activemq ネットワークを使用すると、簡単にストア アンド フォワードを実行できます。( http://activemq.apache.org/networks-of-brokers.html )

ローカルからリモートにしたい場合は、デフォルトで動作します。リモートからローカルに通信したい場合は、次のいずれかを行う必要があります。

A) ローカルからリモートへ行ったのと同じ方法で、リモートからローカル ブローカーへの接続を確立します (フェイルオーバー トランスポートを使用して、ブローカーが接続の損失と復元の後に再接続します。私たちは常にこれを行い、うまく機能します)。

B)ローカルからリモートのデュプレックスへの接続を確立します(上記のリンクの duplex uri パラメータを見てください)。

duplex false true の場合、メッセージの生成と消費の両方にネットワーク接続が使用されます。これは、ハブがファイアウォールの背後にある場合など、ハブとスポークのシナリオで役立ちます。

例:

 <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 toJMSBridgeを使用して動作させました。以下の関連する構成を参照してください。

しかし、別の潜在的な問題があります。リモートの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 に答える