java - Apache Camel : What marches messages along?

标签 java architecture soa apache-camel esb

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

Camel RouteBuilder 是否只是组成一个 EndpointsRoutes 的图表,并知道哪个目的地/下一个 Endpoint在消息访问某个 Endpoint 之后将消息传递给,或者让 Endpoints 自己知道哪个是它已处理的消息的下一个目的地。

不管怎样,我很困惑:

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

最佳答案

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

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

关于java - Apache Camel : What marches messages along?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11089755/

相关文章:

Java 在对象中创建对象

java - 匿名 JAX-RS 资源

java - JTDS 驱动程序 - 连接池与连接池

用于聚合和滑动窗口实现的java框架

swift - 设计模式,多级 View Controller 包含的架构

architecture - 事件溯源 - 'Upgrading' 投影仪

architecture - SOA 中的循环依赖

.net - 当 IAmStartedBy 消息出现在 IHandle 消息之后时,NServiceBus Saga 中会发生什么?

java - 如何使用Textureview作为cameraX的预览 [Java]

Java RMI 启动服务器抛出异常