Apache Camel 学习01 简介
Apache Camel:
概念:是一个基于 规则路由 和 processor处理 的引擎。
官网介绍:Camel允许您创建企业集成模式,以基于Java的域特定语言(或Fluent API),基于Spring或Blueprint的Xml配置文件或通过Scala DSL实现路由和中介规则。
这意味着无论是在Java,Scala还是XML编辑器中,您都可以在IDE中智能地完成路由规则
主要功能:协议转换,消息路由
核心思想:从一个from源头得到数据,通过processor处理,再发到一个to目的地. 这个from和to可以是我们在项目集成中经常碰到的类型:一个FTP文件夹中的文件,一个MQ的queue,一个HTTP request/response,一个webservice等等.
要素:
Camel Context:Camel的运行容器,管理所有的camel路由,类似Spring的context.
CamelContext是对Camel运行时的一个抽象,一般来说一个Camel应用里会有一个CamelContext对象;
Route:路由;定义了Message在一个系统中传输的真实路径/通道。开发者可以自己定义路由,并且需要信任引擎可以完成复杂的传输工作。每个路由都有唯一的标识符,用来记录日志,调试,监控,以及启动或停止路由。
ASB中路由在csb-routes中的restproxy中,其中的CallRecordPolicy中的onstart(),onStop()等方法定义了路由调用前后的操作等,ValidityCheck(implements Processor)定义了访问路由时的参数检查
路由就是对于一个Message的处理流程的定义,定义路由规则即为定义一个流程,让其按照我们定义的规则走下去
一个route就是将从输入队列中得到的消息,通过一步步设置好的逻辑判断(例如过滤器和路由规则),到达一个目标队列中(如果有的话);Camel为应用开发者提供了两种方式来定义这些路由规则:
Processor:是一个消息接收者和消息通信的处理器(一个处理消息的类)。Processor是Route的一个元素,可用来消息格式转换或者其他的一些变化;
Endpoint: Endpoint作为Camel系统中一个通道的端点,可以发送或者接收消息。在Camel中Endpoint通过URI来配置,在运行时Camel来查找端点,端点的功能强大全面且可维护。
Component:或者说EndpointFactory更合适,Component是创建Endpoint实例的工厂类;
CamelContext对象维护的一个组件名到Component对象的映射表
Camel对多种通信协议提供了开箱即用的支持,这种支持正是建立在实现了Component的类及 让CamelContext自动建立映射的配置文件的基础之上的。
Message: Message 接口提供了一个对单个消息的抽象,这些消息可以是一个请求,回复或者是一个异常。
Exchange: 一个消息之间通信的抽象的会话; 在Camel的Route中,消息在各Route中是以Exchange形式传递的