EIP中消息路由器和基于内容的路由器的区别



我想了解两种企业集成模式之间的确切区别

基于内容的路由器

消息路由器

Camel文档中的定义表明,基于内容的路由器是消息路由器的特例。他们为什么要单独列出它们?

实际上"消息路由器"是"基本消息传递概念"之一。此类基本消息传递概念的列表如下:

  • 通道 - 消息传递应用程序通过消息通道(将发送方连接到接收方的虚拟管道)传输数据。
  • 消息 - 消息是可以在通道上传输的原子数据包。
  • 多步骤传递 - 通常需要在邮件由其原始发送方发送邮件之后,但在最终接收方收到邮件之前对邮件执行一组操作。
  • 路由 - 在具有众多应用程序和通道的大型企业中,消息可能必须经过多个通道才能到达其最终目的地。消息必须遵循的路由可能非常复杂,以至于原始发送方不知道哪个通道会将消息传递给最终接收方。相反,原始发件人将消息发送到消息路由器。
  • 转换 - 各种应用程序可能不同意相同概念数据的格式;发送方以一种方式格式化消息,但接收方希望以另一种方式格式化消息。
  • 终结点 - 应用程序没有与消息传递系统交互的某些内置功能。相反,它必须包含一个代码层,该层知道应用程序如何工作以及消息传递系统如何工作,将两者桥接起来,以便它们协同工作。
"基于内容的路由器"是"消息路由器">

之一,还有许多不同的其他消息路由器可用,如"消息过滤器","分配器","聚合器","收件人列表"等。

我建议读一本骆驼用过的书,这样所有这些观点都会更清楚: https://www.amazon.com/o/asin/0321200683/ref=nosim/enterpriseint-20

据我了解,消息路由器模式仅适用于输入和输出是消息传递系统的队列或主题的情况。

基于内容的路由器不仅限于消息传递。我想你可以说,在消息路由器中,你有一个基于内容的路由器来决定走哪条路。

在骆驼中,决定是使用 choice() 元素做出的。

如果我的假设是正确的,那么骆驼的消息路由器的文档是错误的,因为它没有反映队列。如果我们同意这一点,我将检查骆驼开发列表并更正 wiki 页面。

最新更新