Camel

阅读更多

摘自:http://blog.csdn.net/wcp137297478/article/details/22961821

http://www.cnblogs.com/klxz/p/3646933.html

 

Apache camel 是 一个开源的一体化框架,其目的是使一体化系统更容易。

 

我们都知道,庞大的企业系统通常是由多个小型的系统组成的。在小型系统之间,必然会需要有大量的信息交互。

 

我们熟知的JMS等,但因为这些消息系统太多,导致难以维护,于是,camel诞生了。

 

camel将这些系统之间的消息传输行为,统一的抽象为路由。

你可以通过它的语法,规范的定义一个路由规则,如接受哪些消息,如收到后如何处理,如发送哪些消息。

 

camel为各种语言定义了相应的DSL,用来定义一个路由,如

Java DSL

From(“file:data/inbox”).to(“jms:queue:order”);

 

Spring DSL

       

       

 

Scala DSL

from “file:data/inbox”->”jms:queue:order”

上面的例子都是描述,将一个文件夹中的数据,传输到JMS队列中去。

 

 

camel小栗子:将一个文件目录中的文件移动到另一个文件目录中

下载camel包:

http://camel.apache.org/download.html

代码:

public class FileCopierWithCamel{

  public static void main(String args[]) throws Exception{

    CamelContext context = new DefaultCamelCotext();

    context.addRoutes(new RouteBuilder(){

      public void configure(){

        from("file:data/indo?noop=true")

          .to("file:data/outbox");

      }

    });

    context.start();

    Thread.sleep(10000);

    context.stop();

  }

}

每一个camel应用都会实例化CamelConext,并在其中添加Route。

Route可以由RouteBuilder创建,在其中指定传输规则。

最后调用context方法启动传输和停止传输。

 

noop选项表示传输完后不做任何事,不然源文件将会被删除。

 

 

传输的数据被抽象为Message,它包含头信息,消息体和附件。

每个Message都有一个String类型的唯一标识,这个标识有时是依赖于具体协议,有时是Camel自己创建的。

头消息是name-value格式,储存发送者的UID,编码和认证。

消息还有一个失败标志。

 

 

 

 

 

 

 

第二章将介绍camel其中一个最重要的一部分:消息路由。Camel主要有两种方式的路由规则:基于java领域的指定语言(DSL)和基于spring的xml文件的配置。

 

你可能感兴趣的:(Camel)