Apache Camel是Apache基金会下的一个开源项目,它是一个基于规则路由和处理的引擎,提供企业集成模式的Java对象的实现,通过应用程序接口 或称为陈述式的Java领域特定语言(DSL)来配置路由和处理的规则。其核心的思想就是从一个from源头得到数据,通过processor处理,再发到一个to目的的.
这个from和to可以是我们在项目集成中经常碰到的类型:一个FTP文件夹中的文件,一个MQ的queue,一个HTTP request/response,一个webservice等等.
Camel可以很容易集成到standalone的应用,在容器中运行的Web应用,以及和Spring一起集成.
下面用一个示例,介绍怎么开发一个最简单的Camel应用.
1,从http://camel.apache.org/download.html下载Jar包.在本文写作的时候最新版本是2.9. 本文用的是2.7,从2.7开始要求需要JRE1.6的环境.
下载的zip包含了Camel各种特性要用到的jar包.
在本文入门示例用到的Jar包只需要:camel-core-2.7.5.jar,commons-management-1.0.jar,slf4j-api-1.6.1.jar.
2,新建一个Eclipse工程,将上面列出的jar包设定到工程的Classpath.
新建一个如下的类:运行后完成的工作是将d:/temp/inbox/下的所有文件移到d:/temp/outbox
- public class FileMoveWithCamel {
- public static void main(String args[]) throws Exception {
- CamelContext context = new DefaultCamelContext();
- context.addRoutes(new RouteBuilder() {
- public void configure() {
-
- from("file:d:/temp/inbox/?delay=30000").to("file:d:/temp/outbox");
- }
- });
- context.start();
- boolean loop =true;
- while(loop){
- Thread.sleep(25000);
- }
- context.stop();
- }
- }
上面的例子体现了一个最简单的路由功能,比如d:/temp/inbox/是某一个系统FTP到Camel所在的系统的一个接收目录.d:/temp/outbox为Camel要发送的另一个系统的接收目录.from/to可以是如下别的形式,读者是否可以看出Camel是可以用于系统集成中做路由,流程控制一个非常好的框架了呢?from("file:d:/temp/inbox/?delay=30000").to("jms:queue:order");//delay=30000是每隔30秒轮询一次文件夹中是否有文件.3,再给出一个从from到to有中间流程process处理的例子:
- public class FileProcessWithCamel {
- public static void main(String args[]) throws Exception {
- CamelContext context = new DefaultCamelContext();
- context.addRoutes(new RouteBuilder() {
-
- public void configure() {
- FileConvertProcessor processor = new FileConvertProcessor();
- from("file:d:/temp/inbox?noop=true").process(processor).to("file:d:/temp/outbox");
- }
- });
-
- context.start();
- boolean loop =true;
- while(loop){
- Thread.sleep(25000);
- }
- context.stop();
- }
- }
这里的处理只是简单的把接收到的文件多行转成一行
- public class FileConvertProcessor implements Processor{
- @Override
- public void process(Exchange exchange) throws Exception {
- try {
- InputStream body = exchange.getIn().getBody(InputStream.class);
- BufferedReader in = new BufferedReader(new InputStreamReader(body));
- StringBuffer strbf = new StringBuffer("");
- String str = null;
- str = in.readLine();
- while (str != null) {
- System.out.println(str);
- strbf.append(str + " ");
- str = in.readLine();
- }
- exchange.getOut().setHeader(Exchange.FILE_NAME, "converted.txt");
-
- exchange.getOut().setBody(strbf.toString());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
在Eclipse里运行的时候,Camel默认不会把log信息打印到控制台,这样出错的话,异常是看不到的,需要把log4j配置到项目中.
- log4j.appender.stdout = org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.Target = System.out
- log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
- log4j.appender.stdout.layout.ConversionPattern = %-5p %d [%t] %c: %m%n
- log4j.rootLogger = debug,stdout
分享到:
相关推荐
Apache Camel 框架实现的JMS路由。有图解,很详细。
Apache Camel框架 HTTP相关的jar包,httpclient等等.
ApacheCamel-JDBC Apache Camel JDBC组件 代码样例Demo
Apache Camel 开发使用指南中文版
ApacheCamel-FTP ApacheCamel-FTP Apache Camel FTP组件 Demo 样例
在这个专题中,我们介绍了相当数量技术组件:Flume、Kafka、ActiveMQ、Rabbitmq、Zookeeper、Thrift、Netty、DUBBO等等,还包括本文要进行介绍的ApacheCamel。有的技术组件讲得比较深入,有的技术组件则是点到为止。...
接上文EndpointDirect用于在两个编排好的路由间实现Exchange消息的连接,上一个路由中由最后一个元素处理完的Exchange对象,将被发送至由Direct连接的下一个路由起始位置(http://camel.apache.org/direct.html)。...
该文档来自阿帕奇2015中国路演。姜宁发表了题为“我和Apache Camel这些年/Years of Apache Camel and I”的主题演讲,欢迎下载!
简化软件集成:一个ApacheCamel教程在本教程中,您将了解集成大型软件的一些最大挑战,以及ApacheCamel如何轻松解决这些难题。在您的软件工程中,您可能至少做了一次以下操作:1.确定应启动数据发送的业务逻辑片段。...
01-ApacheCamel-HelloWorld Apache Camel Http helloworld Demo
05-ApacheCamel-CXF-WebService Apache Camel 集成 CXF组件,包含服务端、测试客户端
camel-idea-plugin, Apache camel IntelliJ IDEA 插件 Apache camel IDEA插件 IntelliJ IDEA的插件,为代码编辑器提供一组 Apache camel 相关的功能。插件包括:Java,XML,属性或者yaml文件中驼峰终结点的代码完成...
Apache Camel Demo Apache Camel Blog: 之前不小心将一些无用的配置文件上传了,请自行清除 该项目中包含 Apache Camel - FTP组件 Apache Camel - CXF组件(Code First and WSDL File First) Apache Camel - JMS/...
骆驼开发指南,企业集成,路由表达式和判断,camel高级编程,api组件框架,耗时半年翻译成果,全部为markdown文档!!!
An advanced guide to Enterprise Integration using Apache Camel About This Book Integrate your applications with Apache Camel and enhance efficiency and scalability Master all the EIPs supported by ...
camel direct http jdbc mybatis 等等组件 骆驼 camel部分源码分析
apache camel for windows