认识学习Apache Camel中的交换、组件和端点

680 阅读4分钟

什么是Exchange?

消息是Exchange的一部分,它是一个更大的Camel对象。在Camel文档中,Exchange这个术语经常被使用。Exchange是当前发生在你的Camel路线中的通信或对话。

在旅程开始时,一个Exchange已经形成(从你的第一步开始)。当消息经过路线的各个步骤时,它会被修改。

航线第一步的输出信息成为第二步的输入信息。然后重复这种方法,直到路线完成。
当前的请求和应答信息在路由的任何一点上都存储在Exchange对象中。

交易所里有什么?

在处理Camel时,除了在路由中编写代码外,你可能想直接改变Exchange对象。可以用一个自定义的Java类来做这件事。

下面是一个例子,说明你如何在Java代码中与这些对象互动。这里,Exchange对象是对当前Camel Exchange的引用。

该交换有一个主体和一个头值,我们可以从Camel的交换对象中获取。

Message message = exchange.getMessage(); 
String header = message.getHeader("MyHeader", String.class); 
String body = message.getBody(String.class);

组件和端点

Camel的端点是你的路由的基础。它们是你的管道中接收和传递消息的部分,它们由具有连接到各种其他服务的逻辑的组件来支持。

Camel有一些组件,例如:

1. 文件处理

2.消息传递

3.网络服务

4.云应用程序

5.特殊的公用事业

什么是Camel组件?

Apache Camel是一个开源的、轻量级的集成库,可以在你的应用程序中实现智能路由、消息转换和协议调解。这本经过全新修订的Refcard介绍了Apache Camel,描述了其优点,并展示了如何使用其最重要的功能。了解如何使用JMS和ActiveMQ,以及Bean组件、Log和Metrics组件,和Camel的REST DSL。

寻找组件

第一站应该是Camel网站,它有一个详细介绍所有可用组件的页面。当你想知道Camel是否包含你需要的组件时,这是一个不错的开始。

如何使用一个组件

当你决定在Camel中使用一个组件时,有两个步骤是你必须做的。

1.在你的Maven pom.xml中,添加相关的依赖性。在Camel中,您需要将该组件作为大多数组件的依赖项添加。该组件的文档页会告知您需要安装的Maven依赖项。

在您的Maven POM中添加camel-csv依赖项,例如,要使用CSV组件,该组件使Camel能够处理CSV文件。

<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-csv</artifactId>
</dependency>

2.2. 添加from步骤(如果您想从组件端点消费)或to步骤,以便在您的路由中使用该组件(如果您想向端点发送消息)。

将URI属性设置为你的组件在步骤本身的端点URI,它指示组件用所需的配置建立一个新的端点。

定义一个端点URI

下面是一个组件端点URI的例子

scheme:mainpart?myParam=XXX&anotherParam=YYY

- 第一个方案指定了我们要使用的组件,比如说,文件。

-主要 部分部分通常指定组件应该使用的位置、目的地或主要参数;例如,当使用文件组件时,主要部分指定我们要读或写文件的文件夹。

- 最后的optionN参数用于给组件提供更多的选项。

以 "文件 "组件为例

这是文件组件配置的端点URI。

file:myfiles/input?fileName=MYFILE.TXT

-**file:**指定我们要使用Camel的File组件。

-myfiles/input是我们要读取或写入的文件夹。

-fileName=MYFILE.TXT是我们添加到文件组件的一个选项,告诉它只消费名为MYFILE.TXT的文件。

该端点现在可以在路由中使用。在下面的路由示例中,我们在同一个路由中使用了两个不同的File端点。

有两个文件端点的路由(Java DSL)

from("file:myfiles/input?fileName=MYFILE.TXT")
.log("I'm doing something")
.to("file:documents/done");

以及XML DSL中的同一路由。

<route>
<from uri="file:myfiles/input?fileName=MYFILE.TXT"/>
<to uri="file:documents/done"/>
</route>

端点API

要为一个端点创建生产者或消费者,你可以使用下面列出的Java API方法。

1.用createProducer()创建一个生产者,用于向端点发送消息交换。

2.当创建一个消费者时,createConsumer()使用事件驱动消费者模式,通过一个处理器从端点消费消息交换。

3.createPollingConsumer()是一个PollingConsumer,实现了Polling Consumer模式,用于从端点消费消息交换。

总结

Apache组件参考为消息传递、发送数据、通知和其他服务提供了许多参考,这些服务不仅可能解决消息传递和数据传输的便利性,而且还能提供数据安全性。