【问题标题】: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 等的一些基本原则。

【问题讨论】:

    标签: java architecture soa apache-camel esb


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-11
        • 2018-03-19
        • 1970-01-01
        • 1970-01-01
        • 2022-11-29
        • 1970-01-01
        • 1970-01-01
        • 2014-12-30
        相关资源
        最近更新 更多