问题
Let's consider two systems. Each of the systems uses a dedicated messaging broker for communication between its micro-services.
We want to communicate these two systems using Spring Cloud Stream.
Case A
Both the systems use RabbitMQ as a message broker.
Which approach is better:
- Multi-binder (
spring.cloud.stream.binders
) allows connecting to two different administrative domains. "Multi-binder configuration theenvironment.spring.rabbitmq
forces us to create a whole new child application context which doesn't take into account any application configured beans"... that causes some issues - Shovel Plugin that moves messages between two different administrative domains and doesn't force the system to go outside its domain. Is the Shovel Plugin production ready?
Case B
The first system uses RabbitMQ and the second uses Kafka message broker.
Which approach is better:
- Multi-binder - analogously to the Case A.1.
- Shovel Integration App implemented as a Spring Cloud Stream multi-binder, that works like the multi-broker Shovel Plugin. In this case, our system isn't forced to go outside its domain.
I think that the A.2 and B.2 are the better solutions, but I would like to discuss this with experienced software developers.
来源:https://stackoverflow.com/questions/53497244/spring-cloud-streams-rabbitmq-multi-binder-vs-the-shovel-plugin-application