10

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

骆驼是否RouteBuilder只是组成一个图表Endpoints并且知道在它访问某个目的地之后将消息传递到Routes哪个目的地/下一个目的地,或者他们自己知道哪个是它已处理的消息的下一个目的地。EndpointEndpointEndpoints

无论哪种方式,我都很困惑:

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

2 回答 2

10

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

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

于 2012-06-26T16:48:46.030 回答
8

我建议先阅读这个 QA Apache Camel 到底是什么? ...以及它所指的链接,有关 Apache Camel 的更多背景信息。

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

于 2012-06-19T03:54:04.970 回答