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

Apache Camel框架集成Spring

 
阅读更多

Apache Camel提供了和Spring的集成,通过Spring容器(ApplicationContext)来管理Camel的CamelContext,这样的话,就不需要写代码来控制CamelContext的初始化,启动和停止了.Camel会随着Spring的启动而启动起来.

本文将Apache Camel框架入门示例(http://blog.csdn.net/kkdelta/article/details/7231640)中的例子集成到Spring中,下面简单介绍一下集成的基本步骤.

1,新建一个Eclipse工程,将Spring3的jar包,和Camel的jar包配置到工程的classpath.

2,Route类要继承RouteBuilde,如下

[java] view plaincopy
  1. public class FileProcessWithCamelSpring extends RouteBuilder {  
  2.     @Override  
  3.     public void configure() throws Exception {  
  4.         FileConvertProcessor processor = new FileConvertProcessor();   
  5.         from("file:d:/temp/inbox?delay=30000").process(processor).to("file:d:/temp/outbox");          
  6.     }  
  7. }  

 

3,Processor仍然和和入门示例的代码相同.

 

[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. }  

 

4,创建一个Spring的配置文件如下:注意要将camel的xmlns加入文件中

 

[html] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  4.     xmlns:camel="http://camel.apache.org/schema/spring"  
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
  6.     http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"  
  7.     default-autowire="byName"  default-init-method="init">  
  8.     <camelContext id="testCamelContext" xmlns="http://camel.apache.org/schema/spring">  
  9.         <package>com.test.camel</package>  
  10.     </camelContext>      
  11. </beans>  

 

5,启动Spring容器,Camel会自动启动,不用像入门示例那样CamelContext context = new DefaultCamelContext(), context.addRoutes(..); context.start();

        ApplicationContext ac = new ClassPathXmlApplicationContext("config/cameltest.xml");
        while (true) {
            Thread.sleep(2000);
        }

可见,Camel可以很容易的和Spring集成.

Camel还提供了"Spring DSL"来在XML中配置Route规则,不需要用JAVA类(如上面的FileProcessWithCamelSpring )来实现route.

 

 

[html] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  4.     xmlns:camel="http://camel.apache.org/schema/spring"  
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
  6.     http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"  
  7.     default-autowire="byName"  default-init-method="init">  
  8.     <bean id="fileConverter" class="com.test.camel.FileConvertProcessor"/>  
  9.     <camelContext id="testCamelContext" xmlns="http://camel.apache.org/schema/spring">  
  10.         <route>  
  11.             <from uri="file:d:/temp/inbox?delay=30000"/>  
  12.             <process ref="fileConverter"/>  
  13.             <to uri="file:d:/temp/outbox"/>  
  14.         </route>  
  15.     </camelContext>  
  16. </beans>  

 

与第五步一样启动Spring容器,Camel会每隔30秒轮询一下看d:/temp/inbox是否有文件,有的话则进行处理.

分享到:
评论

相关推荐

    Java_Apache Camel Spring Boot示例.zip

    Java_Apache Camel Spring Boot示例是一个综合性的项目,展示了如何在Spring Boot应用程序中集成Apache Camel框架。Apache Camel是一个流行的开源框架,它简化了企业级集成(EIP,Enterprise Integration Patterns)...

    Apache Camel中文开发使用指南.zip

    6. **Spring和OSGi集成**:Camel可以无缝集成到Spring框架中,利用Spring的依赖注入和配置能力。此外,它也支持在OSGi容器(如Apache Karaf)中部署和管理。 7. **分布式系统集成**:Camel的异步处理和负载均衡特性...

    apache camel 集成组件 教程

    此外,Camel 还与许多其他项目有着良好的兼容性,例如 Spring Framework、Apache Karaf 等,这为开发者提供了更多的选择和灵活性。 通过学习《Camel in Action》,开发者不仅能够掌握 Apache Camel 的核心技术和...

    Camel服务集成,服务编排操作文档

    Apache Camel 是一个强大的开源框架,专门用于构建企业级应用程序中的集成解决方案。它提供了一种声明式的方式来进行服务集成和服务编排,使得开发者可以方便地连接不同的系统、协议和API,从而构建复杂的数据流。在...

    Apache Camel 开发指南.rar

    总结,"Apache Camel 开发指南"是学习和掌握Camel框架的重要资源,涵盖了从基础概念到高级特性的全面内容。通过深入研究这些文档,开发者可以有效地利用Camel构建高效、可扩展的企业级集成解决方案。

    apache camel 简介

    Apache Camel 是一个强大的开源集成框架,它以规则为基础的路由和中介引擎为核心,实现了企业应用模式(EIP,Enterprise Integration Patterns)的POJO化。这个框架的目的是简化不同系统和服务之间的集成,允许...

    01-ApacheCamel-HelloWorld

    在这个"01-ApacheCamel-HelloWorld"示例中,我们将深入理解如何使用 Camel 实现一个简单的 HTTP "Hello World" 应用。 Apache Camel 的核心理念是“编程通过配置”,它提供了丰富的组件库,可以与各种协议、API 和...

    apache camel

    Apache Camel 是一个强大的开源集成框架,它允许开发者在各种企业应用程序之间建立灵活、可重用的数据路由和集成解决方案。这个框架的核心理念是“统一的消息模型”,它提供了多种组件,支持多种协议和数据格式,...

    Apache CXF2+Spring2.5轻松实现WebService

    Apache CXF和Spring提供了丰富的扩展点,可以集成如Spring Security来控制访问权限,使用Spring AOP来处理事务,以及通过CXF的拦截器机制来实现自定义的日志、验证等功能。 总结来说,Apache CXF 2与Spring 2.5的...

    apache-camel-1.0.0.zip

    Apache Camel 是一个流行的开源集成框架,它允许开发者在各种企业集成模式之间建立连接,从而实现应用程序之间的通信。这个"apache-camel-1.0.0.zip"文件是Apache Camel的1.0.0版本的发布包,包含了该版本的所有组件...

    apache-camel-2.5.0.zip

    Apache Camel 是一个强大的开源集成框架,它允许开发者以声明式的方式定义路由和转换数据的规则。这个"apache-camel-2.5.0.zip"压缩包包含的是Apache Camel的2.5.0版本,该版本发布于2011年,是Camel发展历史上的一...

    apache-camel-2.12.0-src.zip

    6. **Spring集成**:Camel 可以无缝集成到Spring框架中,利用Spring的依赖注入和配置管理功能,简化Camel应用的开发和维护。 7. **Osgi支持**:2.12.0版本可能仍然支持在Osgi容器(如Apache Felix或Equinox)中运行...

    Camel实战中文版第四章.pdf

    《Camel实战中文版第四章》主要探讨了Apache Camel框架中如何利用现有的Java Bean进行消息处理和服务调用。这一章节对于理解和掌握Camel如何与现有Java系统集成非常重要。 #### 二、ServiceActivator企业设计模式的...

    ecg-broker_websocket_apachecamel_

    标题中的"ecg-broker_websocket_apachecamel_"似乎是指一个使用Apache Camel来处理心电图(ECG)数据的系统,它特别关注WebSocket通信。这个系统利用Apache Camel的强大功能,通过修改配置文件来适应不同的接口,如...

    Apache Camel USER GUIDE Version 2.3.0

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

    apache camel技术研究01

    Apache Camel 是一个轻量级的集成框架,基于企业整合模式(EIP)设计,它提供了一种简单且灵活的方式来连接各种应用程序和系统。Camel 项目始于2007年,尽管相对较新,但已经在开源社区中确立了成熟的地位,采用...

    Camel in action PDF和源代码

    《Camel in Action》是关于Apache Camel这一企业级集成框架的专业书籍,这本书深入浅出地讲解了如何使用Camel构建高效、可维护的集成解决方案。PDF版本提供了方便的电子阅读体验,而源代码则帮助读者更好地理解书中...

    Java_Apache Camel示例.zip

    Apache Camel 是一个流行的开源框架,主要用于构建企业级集成解决方案。它提供了一种声明式的方式,通过使用简单且直观的DSL(领域特定语言)来定义路由和消息转换规则。在这个"Java_Apache Camel示例.zip"压缩包中...

    EIP-with-Camel-and-Spring-Integration:如何使用 Camel 和 Spring 集成实现企业集成模式

    使用 Apache Camel 和 Spring 集成的企业集成模式。 用于使用框架演示 EIP 的域是自行车商店。...6弹簧集成Spring Integration 不支持 CSV 文件,因此我们为此使用 Spring Batch。 一次读取一个交货单记录,将其转

Global site tag (gtag.js) - Google Analytics