骆驼路线和端点
Posted
技术标签:
【中文标题】骆驼路线和端点【英文标题】:Camel Routes and Endpoints 【发布时间】:2011-12-05 09:48:54 【问题描述】:我一直在研究 Apache Camel 文档,试图具体了解它的两个最基本的基本概念(端点和路由),尽管这些术语在整个文档中随处使用,我找不到真正定义它们是什么以及它们的用途的参考。尽管他们的名字听起来很明显,而且我认为我理解他们是什么,但我现在被分配到一项让我在 Apache Camel Land 深陷其中的任务,而且它绝对了解这些机制是什么至关重要。
我的猜测是,“端点”只是一个 bean - 可以像任何其他一样在配置文件中进行配置 - 将名称映射到 URI/端口组合(这取自 W3C 文档)。在 Apache Camel 的上下文中,我的猜测是端点用于将组件连接在一起,因此可以在它们之间形成“路由”(连接/映射)。所以当位于 Endpoint 1 的组件 A 想要与位于 Endpoint 2 的组件 B 通信时,只要有 1 到 2 的映射,Camel 就可以在这两者之间传递消息。
如果我在这里错了,请阻止我并纠正我!
所以现在,我已经看到了看起来可以在 Java 中配置路由的示例:
from("endpointA").routeId("someMessage").to("endpointB");
而且我已经看到了看起来可以在 XML 中配置路由的示例:
<route id="">
<from .../>
<to .../>
</route>
这两种配置路由的方法,还是完全不同的概念?
最后,可以在端点之间路由的消息格式是什么?如果必须是 XML,例如,这些路由消息的 XSD/schema 是什么?如果它必须是 Java 对象,Camel 可以发送的对象有哪些界限/限制?
【问题讨论】:
【参考方案1】:您似乎对这个概念有了不错的理解。 我认为以更抽象的术语来考虑端点会有所帮助。 camel documentation 在这里没有多大帮助。端点可以被认为是组件的接口。每个组件可以配置 1 个或多个端点。它帮助我在路由的上下文中思考端点。一条简单的路由可以从端点 A(可以是 JMS 队列、tcp 套接字、文件或任何骆驼组件)到达端点 B(可以是任何骆驼组件)。当然,您也可以在路径中使用处理器来转换数据。
你给出的两个创建路由的例子就是这样,两种创建路由的方法。它们是同一概念的示例。第一个是 Java DSL,第二个是使用 XML。
消息的格式通常是 XML,XML 可以是任何有效的 XML,不需要绑定到 XSD。消息也可以是任何 Java 对象。只要它留在 JVM 中(即不通过套接字),它就不需要可序列化。
【讨论】:
不同意消息格式通常是 XML - 这取决于用例。【参考方案2】:路由是处理步骤的有序组合
Endpoint 表示路由的开始或结束(在大多数情况下),其他路由可能连接到作为它们的开始/结束或可能返回到外部系统(例如 JMS、电子邮件等)
【讨论】:
以上是关于骆驼路线和端点的主要内容,如果未能解决你的问题,请参考以下文章