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

时间:2017-04-12 08:05:18

标签: java apache-camel esb

我想了解两个Enterprise Integration Patterns

之间究竟有什么区别

Content-Based Router

Message Router

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

2 个答案:

答案 0 :(得分:1)

据我所知,消息路由器仅在输入和输出是消息传递系统的队列或主题时才适用。

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

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

如果我的假设是正确的,那么Message-Router at camel的文档是错误的,因为它不反映队列。如果我们同意,我将检查驼峰开发列表并更正维基页面。

答案 1 :(得分:1)

实际上“消息路由器”是“基本消息传递概念”之一。这些基本消息传递概念的列表是:

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

“基于内容的路由器”是“消息路由器”之一,并且有许多不同的其他消息路由器可用,如“消息过滤器”,“分离器”,“聚合器”,“收件人列表”等。

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