Spring Cloud Streams Multi-Binder RabbitMQ против плагина / приложения Shovel
Давайте рассмотрим две системы. Каждая из систем использует выделенного брокера обмена сообщениями для связи между своими микро-сервисами.
Мы хотим связать эти две системы, используя Spring Cloud Stream.
Случай А
Обе системы используют RabbitMQ в качестве посредника сообщений.
Какой подход лучше:
- Multi-Binder (
spring.cloud.stream.binders
) позволяет подключаться к двум разным административным доменам. "Конфигурация мульти-связующегоenvironment.spring.rabbitmq
вынуждает нас создавать совершенно новый дочерний контекст приложения, который не учитывает компоненты, сконфигурированные приложением "... что вызывает некоторые проблемы - Плагин Shovel, который перемещает сообщения между двумя разными административными доменами и не заставляет систему выходить за пределы своего домена. Готово ли производство Shovel Plugin?
Дело Б
Первая система использует RabbitMQ, а вторая использует брокер сообщений Kafka.
Какой подход лучше:
- Мульти-связующее - аналогично случаю А.1.
- Приложение интеграции Shovel реализовано в виде мультибиндера Spring Cloud Stream, который работает как плагин для нескольких брокеров Shovel. В этом случае наша система не вынуждена выходить за пределы своего домена.
Я думаю, что A.2 и B.2 - лучшие решения, но я хотел бы обсудить это с опытными разработчиками программного обеспечения.