Проблема производителя-потребителя ActiveMQ при миграции на разные конечные точки: - PullRequest
0 голосов
/ 28 марта 2019

Одно из наших приложений1 использует конечные точки activeMQ со следующей конфигурацией activemq.broker.url = failover:(tcp://master:61616,tcp://slave:61616)?randomize=false, в этом случае наше приложение1 генерирует событие, и аналогично существует другое приложение2, чей потребитель указал на тот же набор конечных точек activemq.broker.url = failover:(tcp://master:61616,tcp://slave:61616)?randomize=false, способный использовать событие, процессы это и помещает это назад в другую очередь на том же самом брокере1. Вышеуказанная настройка является мультитенантной службой.

Теперь мы хотим перейти на amazonMQ, который является другой средой. со своим собственным kahaDB. Как мы можем добиться миграции без потери события?

Если мы заставим приложение1 указывать на новые конечные точки broker2, которые равны activemq.broker.url = failover:(tcp://master2:61616,tcp://slave2:61616)?randomize=false, оно начнет генерировать сообщения для broker2, который является amazonMQ.

Аналогичным образом, если мы внесем изменения в приложение2, которое потребляет событие и передает обратно брокеру, который должен быть использован приложением 1 с activemq.broker.url = failover:(tcp://master:61616,tcp://slave:61616,tcp://master2:61616,tcp://slave2:61616)?randomize=true. С помощью этого набора мы можем создать событие, готовое к использованию приложением1.

Проблема возникает: приложение2 может опубликовать событие обратно в брокер1 это старые конечные точки activemq.broker.url = failover:(tcp://master:61616,tcp://slave:61616), и это событие никогда больше не будет поглощен.

Как я могу выполнить миграцию без потери каких-либо событий для amazonMQ? Это правильный способ сделать это или что можно сделать здесь?

1 Ответ

0 голосов
/ 10 мая 2019

Мы исправили это, написав отдельному потребителю для amazonMQ и activeMQ. Позже зарегистрируем их во время запуска приложения.

...