1

次の問題があります: リモート ブローカー (データセンター内) に転送するローカル ActiveMQ ブローカーを使用するサイトがいくつかあります。この接続はしばしば不安定で、月に数回、一度に数分から数時間ダウンします。

したがって、現時点でリモート ブローカにアクセスできない場合、メッセージはローカル ブローカで待機する必要があります。

次の ActiveMQ 構成があります。

    <networkConnectors>

            <networkConnector uri="static://(tcp://my-remote-broker:61616)" 
                name="myremotebroker" dynamicOnly="false"
                conduitSubscriptions="true"
                decreaseNetworkConsumerPriority="false">

                    <!-- Exclude all destinations by default -->

                    <excludedDestinations>
                            <queue physicalName=">" />
                            <topic physicalName=">" />
                    </excludedDestinations>

                    <!-- Only forward these to our connection -->

                    <staticallyIncludedDestinations>
                            <topic physicalName="MySpecialTopic"/>
                    </staticallyIncludedDestinations>
            </networkConnector>
    </networkConnectors>

これにより、ローカル ブローカー (トピック MySpecialTopic) からリモート ブローカーにメッセージが転送されます。これは、接続が安定している場合に機能します。

ただし、ローカルブローカーがリモートブローカーとの接続を失うように、インターネット接続を一時的に無効にしようとしました。その時点で、新しいメッセージを送信しました。このメッセージはローカル ブローカーのキューに入れられましたが、ローカル ブローカーが再接続した後でも、リモート ブローカーには届きませんでした。

ActiveMQ 構成に欠けているものはありますか?

ありがとう!

4

1 に答える 1

0

ヒットまたはミスするトピックを使用しています。これは、接続がダウンしている間にメッセージを送信すると失われることを意味します。これは、トピックの標準的な動作です (メッセージの送信時にサブスクライブしているサブスクライバーのみがメッセージを受信します)。(http://activemq.apache.org/how-does-a-queue-compare-to-a-topic.html)

リモートのコンシューマにメッセージを受信させたい場合はキューを使用するか、サブスクライバを永続的なサブスクライバとして設定して、常にメッセージを受信できるようにする必要があります.. (http://activemq.apache.org/how-do-durable -queues-and-topics-work.html)

于 2010-10-14T10:28:22.747 に答える