Apache Camel 学习 使用04

时间:2024-04-09 09:13:14

Apache Camel - 16 - Jetty组件

jetty组件提供基于HTTP的端点来消费和生成HTTP请求。 

也就是说,Jetty组件的行为如同一个简单的Web服务器。

Jetty也可以用作HTTP客户端,这意味着您也可以将其与Camel一起用作生产者。

Jetty是基于流的,这意味着它接收到的输入被作为一个流提交给Camel。

这意味着您将只能读取一次流的内容。

Apache Camel 学习 使用04

Apache Camel - 17 - Timer组件

timer:组件用于在定时器触发时生成消息交换。您只能使用此端点的事件。

Apache Camel 学习 使用04

Camel支持使用Timer和Quartz组件的这种服务。

作为一个例子,让我们每2秒打一条消息给控制台。

from("timer://myTimer?period=2000").setBody().simple("Current time is ${header.firedTime}").to("stream:out");

Apache Camel 学习 使用04

Apache Camel 学习 使用04

Apache Camel - 18 - JDBC组件

jdbc组件使您能够通过JDBC访问数据库,在消息正文中发送SQL查询(SELECT)和操作(INSERT,UPDATE等)。

与使用spring-jdbc的SQL Component组件不同,此组件使用标准JDBC API。

此组件只能用于定义生产者端点,这意味着您不能在from()语句中使用JDBC组件。

您可以使用选项outputType来控制结果。

代码Demo

Apache Camel 学习 使用04

Apache Camel 学习 使用04

Apache Camel - 19 - Lifecycle(Camel 中的生命周期)

Camel生命周期
Camel使用一个名为Service的简单生命周期接口,它有一个start()和stop()方法。

各种类实现了诸如CamelContext之类的Service以及许多Component和Endpoint类。

当您使用Camel时,您通常必须启动CamelContext,它将启动所有各种组件和端点并**路由规则,直到再次停止上下文。

CamelContext提供以下方法来控制生命周期:

start() - to start(重要:start方法没有被阻塞,请参阅这里的详细信息)

stop() - to shutdown(停止所有路由/组件/端点等并清除内部状态/缓存)

suspend() -暂停路由消息。

resume()- 暂停后恢复
Apache Camel 学习 使用04

Apache Camel 学习 使用04

Apache Camel - 20 - Using Camel in a Java application(在Java应用中使用Camel)

Apache Camel 学习 使用04

Apache Camel 学习 使用04

Camel 是怎么工作的?

CamelContext接口是Camel框架的核心。 它负责处理路由中的消息。

路由开头的from(...)语句定义了Camel路由引擎用于获取消息的端点或技术特定位置。 端点是使用URI定义的,例如在前面的示例中,timer:logMessageTimer。 URI的第一部分指定用于使用消息的组件,其余部分是该特定组件的一组指令

Camel路由引擎消耗来自这些端点的交换,并按顺序通过路由中定义的每个步骤处理它们。 引擎负责线程,事务,错误处理,在需要时复制消息以及许多其他细节

Camel上下文是一个长期运行的对象; 它只要应用程序就可以存活,因此它的初始化和关闭通常与应用程序的生命周期有关

路由是处理消息步骤的定义,通常会添加到新创建的上下文中,尽管可以在运行时添加,删除和修改它们。 路径定义只能在上下文启动之前添加到上下文中,尽管可以在上下文运行时停止和重新启动它们

扩展RouteBuilderabstract类可以访问Camel的Java路由定义DSL,或简单地访问Java DSL。 这在实践中意味着在强制的configure()方法中,在键入定义路径起始的第一个from(...)语句之后,您可以获得可能使用的任何集成模式的特定于上下文的代码。
RouteBuilderimplementation可以实现一个或多个路由。 也就是说,在configure()方法中,您可以指定Camel将转换为多个运行时路由实例的多个from(...)语句,每个来自(...)语句一个