0

我是骆驼的新手,对集成技术知之甚少,所以请帮助我理解

正如我从骆驼文档中读到的,骆驼支持可插入的数据格式,以允许将消息编组为二进制或文本格式,以支持一种消息翻译器。

到目前为止,从集成框架的角度来看,我假设集成框架具有标准(比如 X)规范格式,其中来自任何端点的消息在进入时都被转换为 X,并且在提供给任何其他端点时,X 被转换为相应的端点格式反之亦然。

此外,当我观察到它org.apache.camel.Exchange是用于在每个端点之间传输状态的关键对象时,实际数据可以插入任何对象,例如,

exchange.getIn().getBody(Object.class);
exchange.getIn().setBody(new Object());

这让我假设任何 java 对象都可以保存在路由的主体中

Camel 也有任何特定的数据格式,或者它支持任何可以插入的格式,并且开发人员需要保持一致的格式(比如 X),其中从/到的转换发生在 uri:from/uri:to 上的 X

我不确定我是否假设 ESB 作为集成框架,但我有上述疑问

请建议一些参考资料,以更好地理解这个骆驼的规范模型

谢谢

4

2 回答 2

0

您可以定义自己的TypeConverter类以在规范形式和任何其他数据类型之间进行转换。

请看一下Apache Camel 类型转换器

@Converter使用注释编写转换器并在TypeConverter文件中定义它们(在文档中提到的特定位置)。然后转换器将在需要时自动用于骆驼路线。

于 2014-08-05T13:05:49.340 回答
0

Camel 支持多种方式来转换 Exchange 的主体,例如 DataFormats、TypeConveters 或自定义处理器。

通常,由于端点和它们产生/消费的 Exchange 之间的耦合,您可能需要在与外部系统交互时转换 Exchange 的主体。Endpoints 期望它们处理的 Exchange 正文中有一些特定的内容。例如,邮件端点生产者(用于发送电子邮件)期望电子邮件的正文作为 Exchange 的正文。CXF 组件可能期望一个带有 JAXB 注释的 POJO 作为交换的主体,它将被编组为 XML。File 和 Ftp 组件可以在不同的情况下处理 File、byte[] 或 String。

但是,您的路线内的 Exchange 主体的选择完全取决于您。

如果您想将 Camel 用作集成框架(在系统之间移动数据),您可能只需将数据从源格式(由 Consumer Endpoint 生成的 Exchange)转换为目标格式(Exchange 发送到 Producer Endpoint) .

如果您想使用 Camel 实现更复杂的业务逻辑管道,则可能适合使用专门的消息。根据我的经验,在这种情况下,使用 POJO 作为 Exchange 主体就可以正常工作,只要传递消息的路由在同一个 JVM 中。如果您需要将消息发送到远程 JVM(可能通过 JMS),我建议将消息​​显式编组为 XML 或 JSON 消息,而不是发送序列化的 Java 对象。

于 2014-08-12T05:00:50.363 回答