ActiveMQ: копировать сообщения от брокера к брокеру - PullRequest
0 голосов
/ 13 июня 2019

У нас есть требование копировать сообщения от одного брокера ActiveMQ к другому.Здесь сообщение должно быть просто скопировано, и сообщение должно существовать в обоих брокерах.

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

У меня нет доступа для внесения изменений в брокере, поэтому я не мог придумать вариант Сеть брокеров .

Есть ли лучшие практики или инструментыможно копировать сообщения A-MQ от одного брокера к другому?

1 Ответ

0 голосов
/ 17 июня 2019

Насколько я знаю и прочитал, не имея доступа к целевому брокеру, я полагаю, что не существует ярлыка, позволяющего избежать пользовательского приложения, которое повторно отправляет эти сообщения.

Однако, в зависимости отДля сообщений, которые вы хотите повторно опубликовать, ActiveMQ может предложить некоторые функциональные возможности, которые могут упростить вашу реализацию (но они не будут бесплатными, учитывая вычислительные затраты).

Например, если вы хотитечтобы скопировать ALL сообщений, отправленных через этого посредника другому, тогда вы можете рассмотреть возможность использования зеркальных очередей с определенным префиксом (например, «copy»),это позволит вам иметь только одного потребителя, использующего подстановочный знак после этого префикса (например, «copy.>»).Этот потребитель получит ALL сообщений, отправленных брокеру, и это упростит вашу реализацию, поскольку вам нужно будет просто позаботиться об этом единственном потребителе и повторно отправить его.Однако это требует затрат, поскольку, как описано в документации, включение зеркальных очередей создаст дубликаты каждой очереди / темы в системе и будет публиковать каждое сообщение дважды.Вам нужно подумать, является ли это важным неудобством в вашем случае, в зависимости от количества сообщений и доступной памяти, которой располагает ваш брокер.

В случае, если вы просто хотите скопировать НЕКОТОРЫЕ сообщений и не все, тогда я считаю, что самый элегантный способ справиться с этим - создать абстракцию вашего класса Consumer (или конкретной реализации) и использовать эту специальную реализацию для тех очередей, которые вы хотите повторно обработать.сообщение.Этот класс будет отвечать за повторную публикацию сообщений другому брокеру таким образом, чтобы при его использовании он был прозрачен для другого класса Consumer.

Я говорил выше о потребителях, но та же концепция могла быприменять к темам и подписчикам.Надеюсь, что эти идеи помогут :)

...