Apache Camel - 概述

Camel 是一个黑匣子,它从某个端点接收消息并将其发送到另一个端点。 在黑匣子内,消息可以被处理或简单地重定向。

Camel 消息框

那么为什么要为此建立一个框架呢? 在实际情况中,如介绍案例研究中所示,可能有许多发送者和许多接收者,每个发送者和接收者都遵循自己的协议,例如 ftp、http 和 jms。系统可能需要许多复杂的规则,例如来自发送者 A 的消息只能传递给 B & C。 在某些情况下,您可能必须将消息转换为接收者期望的另一种格式。 此翻译可能会受到基于消息内容的某些条件的影响。 因此,本质上您可能需要在协议之间进行转换、将组件粘合在一起、定义路由规则并提供基于消息内容的过滤。 如下图所示 −

Camel 框架

为了满足上述要求并为许多此类情况设计适当的软件架构,Gregor Hohpe 和 Bobby Woolf 于 2003 年记录了企业集成模式 (EIP)。Apache Camel 提供了这些模式的实现以及本教程的目的 是教你如何在介绍中描述的情况下使用 Camel。

Apache Camel 是一个开源框架。 它是一个面向消息的中间件,提供基于规则的路由和中介引擎。 您可以定义规则,例如如果是"牛奶"订单,则将其重定向到牛奶供应商;如果是"油"订单,则将其重定向到油供应商,等等。 使用 Camel,您将能够实现这些规则并以熟悉的 Java 代码进行路由。 这意味着您可以使用熟悉的 Java IDE 在类型安全的环境中定义这些规则。 我们不需要使用 XML 配置文件,因为 XML 配置文件通常很庞大。 如果您更喜欢使用 XML 来配置规则,Camel 虽然可以通过 Spring 框架支持 XML 配置。 如果您是 Scala 爱好者,您甚至可以使用 Blueprint XML 配置文件甚至 Scala DSL。 这也意味着您可以使用您最喜欢的 Java、Scala IDE 甚至简单的 XML 编辑器来配置规则。

该引擎的输入可以是逗号分隔的文本文件、POJO(普通旧 Java 对象)、XML 以及 Camel 支持的其他几种格式中的任何一种。 同样,引擎的输出可以重定向到文件、消息队列甚至监视器屏幕,以便您查看发送到各个供应商的订单。 这些称为端点,Camel 支持 消息端点 EIP 模式。 Camel 端点将在稍后的端点章节中讨论。

Camel 通常与 Apache ServiceMix, Apache ActiveMQApache CXF 一起使用来实现面向服务的架构。