The several basic concept of Camel

CamelContext
CamelContext是对Camel 运行时的一个抽象, 一般来说一个应用里面会有一个CamelContext 对象,具体执行步骤如下:
  1. 创建一个CamelContext对象。 ---  CamelContext camelContext=new DefaultCamelContext();
  2. 向CamelContext对象中添加Endpoints或者是Components
      ---- camelContext.addEndpoint(uri, endpoint);
      ----camelContext.addComponent(componentName, component); 
  3. 向CamelContext对象中添加路由(routes)规则
     ---- RouteBuilder builder = new RouteBuilder() ;
     ----camelContext.addRoutes(builder);
   4. 调用CamelContext的start() 方法,这样可以启动Camel内部有关消息发送,接收,处理所使用的线程。
     ----camelContext.start();
   5. 当调用CamelContext的stop() 方法时,Camel 会将妥善关闭所有endpoint和Camel内部的线程。注意在调用CamelContext.start() 方法时并不一定阻塞, 而是在启动完每个Comonent和Endpoint的内部线程后start() 方法返回。而CamelContext.stop()方法会等待所有Endpoint和Component的内部线程都结束后 stop() 方法才返回。如果你没有在你的Camel 应用程序中调用CamelContext.start() 方法,那么由于内部线程并没有被创建那些消息将不会被处理。 如果你没有在你的Camel应用程序中调用CamelContext.stop()方法,那你你的应用将不会正常退出。如果你在一个JUnit 测试没有调用CamelContext.stop()方法,这可能会造成消息不能被完整地处理,而导致测试运行失败。
         ----camelContext.stop();

ProducerTemplate(CamelTemplate)
这个ProducerTemplate类对CamelContext进行了一个简单的封装。在ProducerTemplate中有向一个Endpoint发送Message或者Exchange的方法, ProducerTemplate提供了一条向Camel内部路由中的Endpoint发送消息的道路, 这样消息就可以在Camel内部的路由规则里面流动而到达指定的目标节点了。

Endpoint
Camel中的Endpoint类似webservice中的endpoint,即某个资源的位置。Camel使用URI来定位一个enpoint. Endpoint可以用来描述进程间通信
--- from(“file://xxxx").to("activemq://xxxx") 将某文件,读入并写入到ActiveMQ的JMS中. 此时file://xxxx是一个Endpointm 而activemq://xxxx s 是另一个endpoint.   file  and activemq are called components. 使用URI来定义endpoint
Camel所支持Endpoint。
    * 一个JMS队列。
    * 一个Web服务。
    * 一个文件。文件可能听起来不是一个典型的Endoint端点。但是你可以这么想,一些应用系统会把信息写到一个文件中,然后另一个应用程序可能读取该文件获得这一信息。
    * 一个FTP服务器。
    * 一个电子邮件地址。客户可以发送邮件到电子邮件地址,和一台服务器可以读取的这个从邮件服务器传入的邮件。
    * 一个POJO (普通旧Java对象)。
Message
Message 接口提供了一个对单个消息的抽象,这些消息可以是一个请求,回复或者是一个异常。
对于每个Camel支持的通讯技术来说,都需要提供一个Message接口的实现。例如JmsMessage就提供了一个Message接口的JMS实现. 在message接口中提供一个get/set方法来访问message id, body 以及message中每个单独header。
Exchange
exchange接口则表示了对message exchange的抽象, 也就是说一个请求消息以及与之对应的应答消息或者异常消息肯定会与一个Exchange相关联。对于Camel来说,请求和应答以及异常消息都分别被称为in, out 以及 fault message。
对于每个Camel所支持的通信技术来说来说,都需要一个实现了Exchang接口的的类.
Component
 Camel的内置组件(用户也可以按照Camel的接口约定,来定义自己的component), 用以提供对某种协议的资源访问的支持,例如file即为component, 其提供了对本地文件系统访问的支持,activemq是另一个component, 提供了camel访问以ActiveMQ实现的JMS的直接访问能力。'Component是创建Endpoint实力的工厂类'.
URI
myCamelContext.getEndpoint("pop3://[email protected]?password=myPassword");
此时getEndpoint中的参数为URI.




猜你喜欢

转载自linda-fxx.iteye.com/blog/1285514