在像Apache Camel这样的ESB上,实际上是哪种机制在沿着路由从端点到端点"推动"(拉/推)消息呢?
Camel的RouteBuilder仅构成了一个包含端点和路由的图形,就知道在访问某个端点后将一条消息传递到哪个目标/下一个端点,还是端点本身知道已处理的消息的下一个目标。
无论哪种方式,都会使人困惑:
- 如果是RouteBuilder知道消息通过系统的"流程",那么这个RouteBuilder需要知道何时Endpoint A应该将消息传递给Endpoint B而不是Endpoint C的业务逻辑,但在我看到的所有Camel示例中,这种业务逻辑并不存在; - 看起来将这种"流程"业务逻辑放在Endpoints本身中会使它们之间耦合,并破坏一些SOA/ESB/EIP等基本原则。
Camel的RouteBuilder仅构成了一个包含端点和路由的图形,就知道在访问某个端点后将一条消息传递到哪个目标/下一个端点,还是端点本身知道已处理的消息的下一个目标。
无论哪种方式,都会使人困惑:
- 如果是RouteBuilder知道消息通过系统的"流程",那么这个RouteBuilder需要知道何时Endpoint A应该将消息传递给Endpoint B而不是Endpoint C的业务逻辑,但在我看到的所有Camel示例中,这种业务逻辑并不存在; - 看起来将这种"流程"业务逻辑放在Endpoints本身中会使它们之间耦合,并破坏一些SOA/ESB/EIP等基本原则。