Apache Camel:什么游戏消息?

IAm*_*aja 10 java architecture soa esb apache-camel

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

请问骆驼RouteBuilder刚刚组成的图形EndpointsRoutes以及知道哪些目的地/下一Endpoint传递一个消息给它访问某后Endpoint还是做Endpoints自己知道这是因为它已经处理了消息的下一个目的地.

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

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

IAm*_*aja 10

在幕后我相信camel正在构建一个纯图,其中每个节点都是Camel端点/处理器,每个边是两个端点(源和目标)之间的路由.此图正是RouteBuilder您调用其API时正在构建的图.当您转到start()Camel路由时,图表很可能被验证并转换为Runnable需要执行的一系列s,并且可能使用某种自定义Executor或线程管理来处理这些Runnable.

因此,Runnables(处理消息的处理器)的执行由该自定义处理Executor.这是"沿着消息传播"的机制,尽管任务排队的顺序是由组成的图的总体结构驱动的RouteBuilder.


Cla*_*sen 8

我建议首先阅读这个QA 什么是Apache Camel? ...以及它所引用的链接,在更多关于Apache Camel的背景上.

业务逻辑可以是任何类型的逻辑,例如Java bean(POJO).Camel允许您以失败的方式访问您的业务逻辑.例如,请参阅这些链接