Есть ли способ выполнить «миграцию» в очередях RabbitMQ, обменах, привязках и т. Д.? - PullRequest
0 голосов
/ 17 мая 2018

Я хотел бы знать, есть ли какая-либо альтернатива для создания / изменения / удаления exchanges, queues и bindings вне зависимости от структуры (в моем случае Spring) для этого и его ограничений.

Проблема

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

На самом деле, единственный способ сделать это - вручную удалить их в каждой среде и позволить инфраструктуре воссоздать их.

Я хотел бы знать, есть ли какая-либо альтернатива для управления этим, что-то вроде инструментов для миграции баз данных, таких как Liquibase, Flyway и т. Д.

Выполнение параллельной ситуации с базой данных, в настоящее время позволяющее Spring создавать все в RabbitMQ, похоже на то, что опция hbm2ddl Hibernate для update включена в производственной базе данных.

1 Ответ

0 голосов
/ 17 мая 2018

Вы можете изменить некоторые вещи, но не другие, но вы должны сделать это программно, а не декларативно.

Вы можете использовать RabbitAdmin.declareBinding(), чтобы связать очередь с другим ключом маршрутизации (и / или обменять), а затем используйте removeBinding() для удаления старого.

Вы не можете изменить аргументы очереди (настройки DLQ и т. д.) или срок службы.

Вы можете использовать плагин shovel для перемещения сообщений из старогоочередь на новую.

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