apache camel 01-核心概念

Camel是一个集成框架,目标是让你方便的集成项目。
Camel框架的核心是一个路由引擎,它允许你定义自己的路由规则,决定接受哪些消息,做出决定如何处理,发送这些消息给其他目标。Camel用这种集成语言允许你定义复杂的路由规则。
Camel的基本原则之一是不会假设任何你需要处理的数据,这是很重要的一点,因为它给你们开发者一个集成任何系统的一个机会,不需要转换你的数据为另外的一种公认格式。
Camel 提供了高水平的抽象,它允许你根据相同的api协议或者系统的数据类型集成各种各样的系统。Camel的组件提供了特殊实现的接口api,其目的是给不同的协议和数据类型服务。Camel打破了传统模式,它支持80多种不同的协议和数据类型,它的扩展性和模块性允许你实现你自己专有协议的无缝插件。这些体系结构的选择淘汰没有必要的转换,从而使camel更加的高效,易学。结果证明,camel是适合嵌入到其他项目中的,因为它提供了充足的处理能力。其他开源的项目,例如Apache ServiceMix和ActiveMQ已经使用camel作为企业集成的一种处理方式。
我们应该提问camel不是什么,camel不是ESB,有些人称camel是个轻量级的ESB,因为它支持路由、事务、监控、编制等。Camel 没有一个容器或者一个可靠的消息总线,但是它可以依赖例如开源的ESB或者前面提到的ServiceMix,由于以上原因,我们更喜欢把camel称作超越一个ESB的集成框架。
在camel中有两个消息模型的抽象概念:

  • org.apache.camel.Message–这个基础的实体包含需要在camle中路由的数据
  • org.apache.camel.Exchage–消息交换是camel的抽象概念。消息交换有个”in”消息作为回复,还有一个”out”消息

camel消息发送的图示如下图所示:
apache camel 01-核心概念
Message的构造如下,message中有一个body作为消息的载体,是Object类型,可以存任何数据;attachments是可选项,有时会被web service和email组件使用。
apache camel 01-核心概念

Exchange的构造如下,交换发送在路由过程的消息容器中,有InOnly和InOut两种类型。
apache camel 01-核心概念
Camel中每一个路由都有一个唯一的标识,用于日志、调试、监控、和启动停止路由。路由有完整的输入资源,所以他可以有效的和input endpoint 联系。
生产者:实体能够创建并发送消息到endpoint。
消费者:接收生产者生成的消息的服务,把他们封装到exchange中并且发送他们处理。camel中有两种消费者:事件驱动的消费者和轮询的消费者。
事件驱动通常是webservice,http,jms,消费者监听消息通道,通常使用TCP/IP端口或JMS队列等待客户端发送消息给它,当消息到达的时候,消费者唤醒并且将消息进行处理。
轮询消费者,它是主动从指定源获取消息,例如FTP,FILE,EMAIL。
FTP: from(“ftp://rider.com/orders?username=rider&password=secret”)
至此介绍了camel的核心概念,其实并不难理解,其主要功能是数据路由到一个个节点处理完后再传送到指定对象中,也就是start->to->end,这个start和end可以是从消息队列中获取一个数据,也可以是一个http请求,也可以是一个实体类函数。而在这消息传递的一系列的过程camel又给我们提供很多内置的函数、对象供我们调用。例如上诉说的Message对象,数据就在该对象的Body中,然后Message又可以分为in message和out message,它们构造一样,分别对应输入和返回消息,例如我们希望该函数最终返回hello world,那我们就要在out message 的body属性值设为hello world。