摘自: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文件的配置。