骆驼路由和端点

19

我一直在阅读Apache Camel文档,试图深入理解其最基本的两个概念(端点和路由),虽然这些术语在文档中随处可见,但我找不到任何实际定义它们是什么以及它们用于什么的参考资料。虽然它们的名称听起来相当明显,而且我认为我知道它们是什么,但现在我被分配到一个任务,让我完全深入了解Apache Camel Land ,所以我必须非常清楚地了解这些机制。

我的猜测是,“端点”只是一个bean-可以像其他任何bean一样在配置文件中配置-将名称映射到URI /端口组合(从W3C文档中获取)。在Apache Camel的上下文中,我猜想端点用于连接组件,以便可以在它们之间形成“路由”(连接/映射)。因此,当位于端点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个回答

17

看起来你对这个概念有了相当不错的理解。

我认为把端点(endpoints)想象成更抽象的接口会有所帮助。在这里Camel文档几乎没有什么用处。可以把端点看作组件的接口。每个组件都可以配置一个或多个端点。端点可以在路由的上下文中进行考虑。简单的路由可以从端点A(这可能是JMS队列,TCP套接字,文件或任何Camel组件)开始,并到达端点B(它可以是任何Camel组件)。当然,在路由中也可以有处理器来转换数据。

你给出的两个路由创建示例只是两种创建路由的方式。它们是同一概念的示例。第一种是Java DSL,第二种是使用XML。

消息的格式通常是XML,并且XML可以是任何有效的XML,不需要与XSD相关联。消息也可以是任何Java对象。只要它不离开JVM(即不通过套接字传输),它就不需要序列化。


2
不同意消息格式通常是XML的说法 - 这取决于具体的使用情况。 - vikingsteve

0
路由是一系列处理步骤的有序组合。
端点代表路由的起始或结束(大部分情况下),其他路由可能连接到它作为它们的起始/结束,或者可能与外部系统(例如JMS、电子邮件等)相连。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接