骆驼路线和端点

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、电子邮件等)

【讨论】:

以上是关于骆驼路线和端点的主要内容,如果未能解决你的问题,请参考以下文章

apache骆驼轮询休息端点

如何调用读取文件的骆驼路线?

骆驼 - “子路线”中的异常处理

骆驼如何将授权标头添加到休息路线?

停止某些路线,而不是完全停止整个骆驼上下文

在 Camel SpringBoot 项目中传播请求参数值