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

Difference between Message Router and Content based Router in EIP

我想了解一下两者到底有什么区别Enterprise Integration Patterns

Content-Based Router

Message Router

camel 文档中的定义暗示基于内容的路由器是消息路由器的特例。他们为什么单独列出它们?

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

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

在 camel 中,使用 choice() 元素做出决定。

如果我的假设是正确的,那么 Message-Router at camel 的文档是错误的,因为它没有反映队列。如果我们同意这一点,我将检查 camel 开发列表并更正 wiki 页面。

实际上"Message Router"是"Basic Messaging Concepts"之一。此类基本消息传递概念的列表是:

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

"Content Based Router" 是 "Message Routers" 之一,还有许多不同的其他消息路由器可用,例如 "Message Filter"、"Splitter"、"Aggregator"、"Recipient list"等

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