骆驼路线和终点

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

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

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

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

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

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

     

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

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

提前感谢您对这些简单术语的任何清晰,我真的找不到简单的解释。

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

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

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

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

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