Пересылка ActiveMQ от локального посредника удаленному посреднику [с нестабильным соединением] - PullRequest
1 голос
/ 24 сентября 2010

У меня следующая проблема: у меня есть несколько сайтов с локальным посредником 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 мне не хватает?

Спасибо!

1 Ответ

0 голосов
/ 14 октября 2010

Вы используете ТЕМУ, которое попало или не попало.Это означает, что отправка сообщения при неработающем соединении БУДЕТ потеряна, что является стандартным поведением для темы (сообщение получат только подписчики, подписанные на момент отправки сообщения).(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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...