Apache Camel 认识
Camel 官网
https://camel.apache.org/camel-core/
https://github.com/apache/camel/
Apache Camel is an open source integration framework that empowers you to quickly and easily integrate various systems consuming or producing data.
https://camel.apache.org/camel-spring-boot
https://github.com/apache/camel-spring-boot
Runs Camel on Spring Boot and provides starters for Camel components
Camel is an Open Source integration framework that empowers you to quickly and easily integrate various systems consuming or producing data.
Camel 是一个开源集成框架,使您能够快速轻松地集成各种消费或生产数据的系统。
Apache Camel 是一个开源集成框架,提供了多种数据源和协议的连接,支持复杂的路由和处理逻辑,使系统集成更简单。
Apache Camel 是一个基于规则路由和中介模式的开源框架,提供企业集成模式的 Java 对象(POJO)实现。通过应用程序接口(或称为声明式 Java 领域特定语言(DSL))来配置路由和中介规则。
中介模式使得系统间的消息传递得以简化,通过中央中介引擎来协调不同系统之间的交互,而不需要大量的 XML 配置文件。
Apache Camel 允许使用类型安全的 Java 代码编写路由规则,并在 Spring 等框架中使用 XML 配置定义路由规则。
Camel 架构
- 消息 (Message):消息包含传递给路由的数据,通常包含消息体(实际数据)、消息头(用于路由和处理的元数据),以及可能的附件(比如文件等)。
- 交换 (Exchange):交换是消息传递的容器,包含有关消息处理的状态信息。在 Apache Camel 中,它不仅包括消息本身,还包括路由处理的状态。Exchange 支持不同的消息模式,如单向(InOnly)或请求-响应(InOut)。
- 端点 (Endpoint):端点是 Camel 中的消息源或目的地,它代表了一个可以发送或接收消息的通道。典型的端点包括队列 URI、web 服务 URI、文件路径等。
- 组件 (Component):组件是端点的工厂,它负责创建不同协议或技术所需的端点。Camel 提供了多种预定义组件用于与各种技术和协议进行集成,如 HTTP、JMS、FTP 等。开发者也可以创建自定义组件。
- 处理器 (Processor):处理器是用于在路由中执行自定义逻辑的接口。它允许开发者编写处理消息的自定义代码,在消息进入路由或离开路由时应用特定的业务逻辑。
总之,这些术语都很好地描述了在消息路由框架中如何处理消息、定义路由规则并集成不同的技术。
Camel 架构图

图片来源
在高层次上看 Camel 的架构非常简单。
CamelContext 表示 Camel 运行时系统,它连接不同的概念,如路由、组件或端点。
在此之下,处理器处理端点之间的路由和交换,而端点则集成不同的系统。
- CamelContext:它是 Camel 运行时的核心部分,负责管理和运行路由。在图中,它连接了不同的路由(如 Route 1、Route 2 等),并通过 DSL(领域特定语言)定义路由的行为。
- 路由 (Routes):路由定义了消息从一个端点流向另一个端点的路径,并且可以包含不同的处理器来操作消息。在图中,路由通过 DSL 描述,例如
.from()、.filter()、.xpath()和.to(),用于定义从哪里接收消息、如何处理消息以及将消息发送到哪里。 - 处理器 (Processors):处理器用于在端点之间对消息进行处理。图中显示了两个处理器示例:Message filter processor(消息过滤处理器)和 Content-based router processor(基于内容的路由处理器)。它们分别用于根据条件过滤消息或根据消息内容进行路由。
- 端点 (Endpoints):端点代表消息的源或目的地,可能是文件系统、JMS(Java 消息服务)、HTTP 等。它们通过组件来抽象实现,组件为各种技术提供了统一的接口,便于与不同系统集成。
- 组件 (Components):组件负责创建端点,用于处理不同的协议或技术。在图中,File、JMS、HTTP 都是组件的例子。
Camel 常用组件
Camel 是 Apache 开源的一个集成框架,常用于实现不同系统之间的消息路由和转换。
Camel 提供了许多常用的组件来简化集成工作。
以下是 Camel 一些常用组件的介绍:
- File:
-
- 负责处理文件系统中的文件操作,能够监控目录中新建的文件、读取文件内容,或者写入数据到文件。
- JMS (Java Message Service):
-
- 通过 JMS 组件可以与各种消息队列(如 ActiveMQ)进行集成,用于消息的异步发送和接收。
- HTTP/HTTP4:
-
- 用于处理 HTTP 请求,支持调用外部的 REST API 或提供 HTTP 服务。
- Kafka:
-
- 支持与 Apache Kafka 的集成,通常用于大数据流处理或事件驱动架构中的消息传递。
- Timer:
-
- 定时器组件,可以在设定的时间或间隔内触发路由执行,常用于调度任务。
- FTP/SFTP:
-
- 通过 FTP 或 SFTP 协议上传和下载文件,用于与远程服务器进行文件传输。
- Database (JDBC):
-
- 通过 JDBC 组件连接数据库,执行查询、插入、更新等操作。常用于从数据库中读取数据或将数据存入数据库。
- REST:
-
- 提供了简化的 REST API 构建方式,可以快速开发并暴露 RESTful 服务。
- Bean:
-
- 允许将 Java Bean 集成到 Camel 路由中,可以通过 Bean 处理业务逻辑。
- Log:
-
- 提供了日志输出功能,用于在路由中记录信息,方便调试和监控。
这些组件可以通过 DSL(Domain Specific Language,领域特定语言)进行配置和使用,Camel 提供了多种路由和集成方式,使其成为企业应用集成的强大工具。
Camel 示例
https://github.com/apache/camel-spring-boot-examples
Apache Camel Spring Boot Examples
https://github.com/apache/camel-examples
Apache Camel Examples
https://github.com/apache/camel-spring-boot-examples/tree/main/pojo

浙公网安备 33010602011771号