- Apache Camel 教程
- Apache Camel - 首页
- Apache Camel - 简介
- Apache Camel - 概述
- Apache Camel - 特性
- Apache Camel - 架构
- Apache Camel - CamelContext
- Apache Camel - 端点
- Apache Camel - 组件
- Apache Camel - 消息队列
- Apache Camel - 项目
- 使用 Spring 与 Camel
- Apache Camel 有用资源
- Apache Camel - 快速指南
- Apache Camel - 有用资源
- Apache Camel - 讨论
Apache Camel - 概述
Camel 是一个黑盒,它从某个端点接收消息并将其发送到另一个端点。在黑盒内部,消息可能会被处理或简单地重定向。
那么为什么要为此构建一个框架呢?在实际情况中,如引言案例研究中所见,可能存在许多发送方和许多接收方,每个发送方和接收方都遵循自己的协议,例如 ftp、http 和 jms。系统可能需要许多复杂的规则,例如来自发送方 A 的消息应仅传递给 B 和 C。在某些情况下,您可能需要将消息转换为接收方期望的另一种格式。这种转换可能取决于消息内容的某些条件。因此,从本质上讲,您可能需要在协议之间进行转换、将组件粘合在一起、定义路由规则并根据消息内容提供过滤。下图说明了这一点 -
为了满足上述要求并为许多此类情况设计合适的软件架构,Gregor Hohpe 和 Bobby Woolf 在 2003 年记录了企业集成模式(EIP)。Apache Camel 提供了这些模式的实现,本教程的目的是教您如何在引言中描述的类似情况下使用 Camel。
Apache Camel 是一个开源框架。它是一个面向消息的中间件,提供基于规则的路由和中介引擎。您可以定义规则,例如,如果它是“牛奶”订单,则将其重定向到牛奶供应商;如果它是“油”订单,则将其重定向到油供应商,依此类推。使用 Camel,您将能够实现这些规则并在熟悉的 Java 代码中执行路由。这意味着您可以使用您熟悉的 Java IDE 在类型安全的环境中定义这些规则。我们不需要使用 XML 配置文件,这些文件通常往往很庞大。Camel 虽然通过 Spring 框架支持 XML 配置,但如果您更喜欢使用 XML 来配置规则。如果您是 Scala 爱好者,您甚至可以使用 Blueprint XML 配置文件,甚至可以使用 Scala DSL。这也意味着您可以使用您喜欢的 Java、Scala IDE 或甚至一个简单的 XML 编辑器来配置规则。
此引擎的输入可以是逗号分隔的文本文件、POJO(普通旧 Java 对象)、XML 或 Camel 支持的其他几种格式中的任何一种。类似地,引擎的输出可以重定向到文件、消息队列,甚至您的监视器屏幕,以便您查看发送给各个供应商的订单。这些称为端点,Camel 支持消息端点 EIP 模式。Camel 端点将在后面的“端点”章节中进行讨论。
Camel 通常与Apache ServiceMix、Apache ActiveMQ 和Apache CXF 一起使用来实现面向服务的架构。