Apache Camel:是啥推动消息?

Posted

技术标签:

【中文标题】Apache Camel:是啥推动消息?【英文标题】:Apache Camel: What marches messages along?Apache Camel:是什么推动消息? 【发布时间】:2012-06-20 19:55:58 【问题描述】:

在像 Apache Camel 这样的 ESB 上,什么机制实际上是沿着从端点到端点的路由“行进”(拉/推)消息?

骆驼RouteBuilder 是否只是组成EndpointsRoutes 的图并知道在访问某个Endpoint 后将消息传递到哪个目的地/下一个Endpoint 或自己执行Endpoints知道它已处理的消息的下一个目的地。

不管怎样,我很困惑:

如果是RouteBuilder 知道消息通过系统的“流动”,那么这个RouteBuilder 需要知道何时将消息传递到Endpoint A 的业务逻辑应该传递Endpoint B 旁边的消息 vs Endpoint C,但在所有 Camel 示例中,我看到此业务逻辑不存在;和 似乎将这种“流”业务逻辑放在Endpoints 本身中将它们耦合在一起,并破坏了 SOA/ESB/EIP 等的一些基本原则。

【问题讨论】:

【参考方案1】:

我建议先阅读这篇 QA What exactly is Apache Camel? ...以及它所引用的链接,关于 Apache Camel 的更多背景。

业务逻辑可以是任何类型的逻辑,例如 Java bean (POJO)。 Camel 允许您以一种松散耦合的方式访问您的业务逻辑。例如,请参阅这些链接

http://camel.apache.org/service-activator.html http://camel.apache.org/bean-integration.html http://camel.apache.org/bean.html http://camel.apache.org/bean-binding.html http://camel.apache.org/hiding-middleware.html http://camel.apache.org/spring-remoting.html

【讨论】:

【参考方案2】:

在幕后,我相信骆驼正在构建一个纯图,其中每个节点都是骆驼端点/处理器,每条边都是两个端点(源和目的地)之间的路线。该图正是 RouteBuilder 在您调用其 API 时构建的。当你去start()骆驼路线时,该图很可能被验证并翻译成一系列需要执行的Runnables,并且可能使用某种自定义Executor或线程管理来处理这些@ 987654325@s.

因此,Runnables(在消息到达时处理消息的处理器)的执行由此自定义Executor 处理。这是“沿着消息前进”的机制,尽管任务排队的顺序是由RouteBuilder 组成的图的总体结构驱动的。

【讨论】:

以上是关于Apache Camel:是啥推动消息?的主要内容,如果未能解决你的问题,请参考以下文章

RabbitMQ - Apache Camel 读取消息如何处理失败的消息

apache camel - 向死信队列添加消息警报

EIP/Apache Camel - 如何同时处理消息,但每个组原子处理?

Apache Camel:GroupedExchangeAggregationStrategy 组 DefaultExchange 而不是消息正文

如何在 apache camel 中执行 gcp pubsub 消息的并行处理

Apache Camel:如何存储变量以供以后使用