`
foxxiao
  • 浏览: 107212 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Apache Camel框架入门示例

 
阅读更多

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

  1. public class FileMoveWithCamel {  
  2.     public static void main(String args[]) throws Exception {  
  3.         CamelContext context = new DefaultCamelContext();  
  4.         context.addRoutes(new RouteBuilder() {  
  5.         public void configure() {  
  6.         //from("file:d:/temp/inbox?noop=true").to("file:d:/temp/outbox");   
  7.         from("file:d:/temp/inbox/?delay=30000").to("file:d:/temp/outbox");  
  8.         }  
  9.         });  
  10.         context.start();  
  11.         boolean loop =true;  
  12.         while(loop){  
  13.             Thread.sleep(25000);  
  14.         }          
  15.         context.stop();  
  16.         }  
  17. }  
上面的例子体现了一个最简单的路由功能,比如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处理的例子:
[java] view plaincopy
  1. public class FileProcessWithCamel {  
  2.     public static void main(String args[]) throws Exception {  
  3.         CamelContext context = new DefaultCamelContext();      
  4.         context.addRoutes(new RouteBuilder() {  
  5.               
  6.         public void configure() {  
  7.         FileConvertProcessor processor = new FileConvertProcessor();  
  8.         from("file:d:/temp/inbox?noop=true").process(processor).to("file:d:/temp/outbox");  
  9.         }  
  10.         });  
  11.           
  12.         context.start();  
  13.         boolean loop =true;  
  14.         while(loop){  
  15.             Thread.sleep(25000);  
  16.         }  
  17.         context.stop();  
  18.         }  
  19. }  
这里的处理只是简单的把接收到的文件多行转成一行
[java] view plaincopy
  1. public class FileConvertProcessor implements Processor{  
  2.     @Override  
  3.     public void process(Exchange exchange) throws Exception {      
  4.         try {  
  5.             InputStream body = exchange.getIn().getBody(InputStream.class);  
  6.             BufferedReader in = new BufferedReader(new InputStreamReader(body));  
  7.             StringBuffer strbf = new StringBuffer("");  
  8.             String str = null;  
  9.             str = in.readLine();  
  10.             while (str != null) {                  
  11.                 System.out.println(str);  
  12.                 strbf.append(str + " ");  
  13.                 str = in.readLine();                  
  14.             }  
  15.             exchange.getOut().setHeader(Exchange.FILE_NAME, "converted.txt");  
  16.             // set the output to the file  
  17.             exchange.getOut().setBody(strbf.toString());  
  18.         } catch (IOException e) {  
  19.             e.printStackTrace();  
  20.         }  
  21.     }  
  22. }  
在Eclipse里运行的时候,Camel默认不会把log信息打印到控制台,这样出错的话,异常是看不到的,需要把log4j配置到项目中.
[java] view plaincopy
  1. log4j.appender.stdout = org.apache.log4j.ConsoleAppender  
  2. log4j.appender.stdout.Target = System.out  
  3. log4j.appender.stdout.layout = org.apache.log4j.PatternLayout  
  4. log4j.appender.stdout.layout.ConversionPattern = %-5p %d [%t] %c: %m%n  
  5. log4j.rootLogger = debug,stdout  

分享到:
评论

相关推荐

    针对Java开发者的ApacheCamel入门指南

    Apache Camel 是一个强大的中间件框架,专为Java开发者设计,用于构建集成解决方案。它通过一个称为"规则引擎"的机制,使得处理来自不同源头(如VM、HTTP、FTP、JMS、文件系统等)的事件和信息变得简单。Apache ...

    Apache Camel

    在现代软件开发与系统集成领域,Apache Camel作为一款开源的、成熟的、功能强大的企业服务总线(ESB)框架,已经成为众多开发者和企业的首选工具。它以Java为基础,提供了一种简单而灵活的方式来构建消息传递和数据...

    Apache Camel USER GUIDE Version 2.3.0

    **Apache Camel** 是一个强大的开源集成框架,基于已知的企业集成模式(Enterprise Integration Patterns, EIP),并提供了强大的 Bean 集成能力。它支持多种编程语言和配置方式,包括 Java 基于领域特定语言 (DSL) ...

    camel 手册

    Apache Camel 是一款强大的开源集成框架,基于已知的企业集成模式(Enterprise Integration Patterns, EIP)进行构建,并且具有强大的 Bean 集成能力。本章节主要介绍了 Apache Camel 的基本概念、特点以及使用场景...

    camel文档

    - **入门示例**:通过一个简单的示例来演示如何快速启动并运行Camel应用程序。 - **第2章:使用Camel进行路由** - **基本概念**:讲解路由的基本原理以及Camel中用于构建路由的组件。 - **高级路由策略**:深入...

    Apache Camel的Java编程入门指南

    Apache Camel 是一个强大的集成框架,它的核心功能是路由和数据转换。通过使用 Camel,开发者可以构建复杂的集成解决方案,将各种不同系统的数据流连接起来。在Java编程中,Camel 提供了丰富的API和DSL(领域特定...

    apache-camel-2.7.2.tar.gz

    在解压"apache-camel-2.7.2.tar.gz"后,会得到一个名为"apache-camel-2.7.2"的目录,其中包含了Camel框架的全部内容。 在这个目录中,你可以期待找到以下几类文件和目录: 1. **README**: 提供有关Camel的基本信息...

    camel-manual-2.8.0

    根据给定文件的信息,我们可以深入探讨Apache Camel 2.8.0版本中涵盖的关键知识点,这一版本是Apache Camel集成框架的重要里程碑,它基于已知的企业集成模式(Enterprise Integration Patterns),并具备强大的Bean...

    camel-manual-1.5.0.pdf

    首先,安装和配置好所需的环境,然后按照官方文档中的示例进行实践操作,熟悉Apache Camel的基本用法。此外,还可以参考相关的教程和案例研究,进一步加深对Apache Camel的理解。 ### 总结 Apache Camel作为一款...

    camel-manual-2.4.0, 用户手册

    对于希望更深入了解的读者来说,建议跳过这些快速入门示例,直接进入更深入的介绍部分。 #### 三、入门指南 - **安装和设置**:介绍如何安装 Apache Camel 并将其设置为开发环境的一部分。 - **基本概念**:解释 ...

    Manning.Camel.in.Action

    《Manning.Camel.in.Action》一书由Claus Ibsen和Jonathan Anstey共同撰写,是Manning Publications出版的一部深入探讨Apache Camel框架的专业书籍。本书不仅为读者提供了全面的理论知识,还包含了丰富的实践指导,...

    camel-manual-2.10.4.pdf

    Apache Camel是一个基于已知企业集成模式的多功能开源集成框架。它提供了一种灵活的方式来定义路由和调解规则,支持多种特定领域的语言,包括基于Java的Fluent API、Spring或Blueprint XML配置文件以及Scala DSL。这...

    camel2.2.0 手册

    Apache Camel 是一个强大的开源集成框架,基于广泛认可的企业集成模式(Enterprise Integration Patterns,简称 EIP)。它提供了一种智能的 Bean 集成方式,允许开发者在 Java 基于的领域特定语言(Domain Specific ...

    ESB开发 SOAC

    1. **Hello World Camel**:这是Camel的一个入门示例,展示了如何使用Camel创建简单的消息处理流程。 2. **Camel Demo**:通过具体的示例演示了Camel在实际应用场景中的使用方法,包括消息路由、转换、过滤等。 ...

    fuse-workshop:研讨会 JB439A 的熔断器代码示例

    “HelloWorld开发示例”是任何编程语言或框架的经典入门项目。在Fuse中,它可能展示了如何创建、部署和运行一个简单的服务,以此来演示Fuse的基本功能和开发流程。 文件名为“fuse-workshop-master”的压缩包很可能...

    Mule in action下载(英文版)

    在ESB领域,Mule面临着来自Apache Camel、IBM WebSphere MQ、Oracle SOA Suite等强大对手的竞争。然而,Mule凭借其开源属性、丰富的社区支持以及对现代技术栈的兼容性,成功地在众多企业中站稳脚跟。 #### Mule的...

    akka-2.3.14.doc

    这部分介绍了如何将Akka与Apache Camel集成,实现消息路由和转换。 #### 7. Utilities 这部分介绍了Akka提供的一些实用工具,包括Event Bus、Logging、Scheduler等。 #### 8. How To: Common Patterns 这部分...

    Akka Scala文档

    - **消息路由框架**:集成 Apache Camel 框架。 - **消息处理**:支持复杂的路由和转换规则。 - **集成外部系统**:轻松连接其他系统。 #### 六、实用工具 ##### 6.1 EventBus - **事件总线**:实现事件的发布与...

Global site tag (gtag.js) - Google Analytics