我是消息传递和集成的新手。当我试图了解 Apache Camel 如何使 EIP 变得简单时,消息路由器引起了我的注意,它使用来自一个队列的消息并基于谓词传输到其他队列的特定场景。
以下是我的问题:
- 为什么使用消息路由器来执行此任务?
- 为什么不让消息 Producer 直接将消息发送到正确的 Queue/Destination?
- 为什么消费者不能依靠消息选择器来做同样的事情?
有人可以分享您对现实生活用例的看法吗?
我是消息传递和集成的新手。当我试图了解 Apache Camel 如何使 EIP 变得简单时,消息路由器引起了我的注意,它使用来自一个队列的消息并基于谓词传输到其他队列的特定场景。
以下是我的问题:
有人可以分享您对现实生活用例的看法吗?
好吧,您的问题更多是关于SoC而不是消息传递。
消息路由器是一个可以很好地执行此任务的 EIP,并且使用 Camel 也很容易实现,但正如您所写的那样,还有其他可能性。
如果消息生产者(客户端)将消息直接发送到最终目的地,它必须知道所有可能的目的地。每当添加/删除或更改目标时,它也必须更改。这是紧耦合,在大多数情况下是不可取的。
如果消息接收者使用消息选择器消费,则客户端可以将所有消息发送到同一个队列。这完全没问题,您可以使用不同的选择器实现单个消费者。Broker 的选择器功能基本上可以让你“将一个队列分成多个队列”。
所以如果你想在客户端和接收者之间实现和运行一个中间集成组件,你可以在这个组件中使用消息路由器。
如果你想省略这个集成组件,你可以使用消息选择器来实现接收者的独立和相互分离。