骆驼路线和终点

时间:2011-10-11 15:10:49

标签: java routes apache-camel endpoint

我一直在研究Apache Camel文档,试图深入了解它的两个基本概念(端点和路由),尽管这些术语在整个文档中随处可用,我找不到实际定义它们是什么以及它们用于什么的参考。尽管他们的名字听起来相当明显,而且我认为我明白他们是什么,但我现在已被分配到一项让我陷入Apache Camel Land深处的任务,它绝对是我明白这些机制是什么至关重要。

我的猜测是“端点”只是一个bean - 一个可以在配置文件中配置的bean - 将名称映射到URI /端口组合(这取自W3C文档)。在Apache Camel的上下文中,我的 guess 是端点用于将组件连接在一起,因此可以在它们之间形成“路由”(连接/映射)。因此,当生活在端点1的组件A想要与生活在端点2的组件B通信时,只要存在从1到2的映射,Camel就能够在这两者之间传输消息。

如果我在这里错了,请阻止我并纠正我!

现在,我已经看到了可以在Java中配置路由的示例:

from("endpointA").routeId("someMessage").to("endpointB");

我已经看到了可以用XML配置路由的示例:

<route id="">
    <from .../>
    <to .../>
</route>

这两种方法是配置路由,还是完全不同的概念?

最后,可以在端点之间路由的消息格式是什么?如果必须是XML,例如,这些路由消息的XSD /架构是什么?如果它必须是Java对象,那么哪些边界/限制适用于Camel可以发送的对象?

2 个答案:

答案 0 :(得分:16)

看起来你对这个概念有了很好的把握。 我认为以更抽象的术语来思考端点是有帮助的。 camel documentation在这里帮助不大。端点可以被视为组件的接口。每个组件可以配置一个或多个端点。它帮助我考虑路线环境中的端点。一个简单的路由可以来自端点A(这可以是JMS队列,tcp套接字,文件或任何驼峰组件)并转到端点B(可以是任何驼峰组件)。当然,您也可以在路径中使用处理器来转换数据。

您提供的路线创建的两个示例就是两种创建路线的方法。它们是同一概念的例子。第一个是Java DSL,第二个是使用XML。

消息的格式通常是XML,XML可以是任何有效的XML,不需要绑定到XSD。该消息也可以是任何Java对象。只要它停留在JVM中(即不通过套接字),它就不需要可序列化。

答案 1 :(得分:0)

路线是处理步骤的有序组合

端点表示路由的开始或结束(大多数情况下),其他路由可能连接到其开始/结束或可能返回到外部系统(例如JMS,电子邮件等)