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 是一个强大的中间件框架,专为Java开发者设计,用于构建集成解决方案。它通过一个称为"规则引擎"的机制,使得处理来自不同源头(如VM、HTTP、FTP、JMS、文件系统等)的事件和信息变得简单。Apache ...
在现代软件开发与系统集成领域,Apache Camel作为一款开源的、成熟的、功能强大的企业服务总线(ESB)框架,已经成为众多开发者和企业的首选工具。它以Java为基础,提供了一种简单而灵活的方式来构建消息传递和数据...
**Apache Camel** 是一个强大的开源集成框架,基于已知的企业集成模式(Enterprise Integration Patterns, EIP),并提供了强大的 Bean 集成能力。它支持多种编程语言和配置方式,包括 Java 基于领域特定语言 (DSL) ...
Apache Camel 是一款强大的开源集成框架,基于已知的企业集成模式(Enterprise Integration Patterns, EIP)进行构建,并且具有强大的 Bean 集成能力。本章节主要介绍了 Apache Camel 的基本概念、特点以及使用场景...
- **入门示例**:通过一个简单的示例来演示如何快速启动并运行Camel应用程序。 - **第2章:使用Camel进行路由** - **基本概念**:讲解路由的基本原理以及Camel中用于构建路由的组件。 - **高级路由策略**:深入...
Apache Camel 是一个强大的集成框架,它的核心功能是路由和数据转换。通过使用 Camel,开发者可以构建复杂的集成解决方案,将各种不同系统的数据流连接起来。在Java编程中,Camel 提供了丰富的API和DSL(领域特定...
在解压"apache-camel-2.7.2.tar.gz"后,会得到一个名为"apache-camel-2.7.2"的目录,其中包含了Camel框架的全部内容。 在这个目录中,你可以期待找到以下几类文件和目录: 1. **README**: 提供有关Camel的基本信息...
根据给定文件的信息,我们可以深入探讨Apache Camel 2.8.0版本中涵盖的关键知识点,这一版本是Apache Camel集成框架的重要里程碑,它基于已知的企业集成模式(Enterprise Integration Patterns),并具备强大的Bean...
首先,安装和配置好所需的环境,然后按照官方文档中的示例进行实践操作,熟悉Apache Camel的基本用法。此外,还可以参考相关的教程和案例研究,进一步加深对Apache Camel的理解。 ### 总结 Apache Camel作为一款...
对于希望更深入了解的读者来说,建议跳过这些快速入门示例,直接进入更深入的介绍部分。 #### 三、入门指南 - **安装和设置**:介绍如何安装 Apache Camel 并将其设置为开发环境的一部分。 - **基本概念**:解释 ...
《Manning.Camel.in.Action》一书由Claus Ibsen和Jonathan Anstey共同撰写,是Manning Publications出版的一部深入探讨Apache Camel框架的专业书籍。本书不仅为读者提供了全面的理论知识,还包含了丰富的实践指导,...
Apache Camel是一个基于已知企业集成模式的多功能开源集成框架。它提供了一种灵活的方式来定义路由和调解规则,支持多种特定领域的语言,包括基于Java的Fluent API、Spring或Blueprint XML配置文件以及Scala DSL。这...
Apache Camel 是一个强大的开源集成框架,基于广泛认可的企业集成模式(Enterprise Integration Patterns,简称 EIP)。它提供了一种智能的 Bean 集成方式,允许开发者在 Java 基于的领域特定语言(Domain Specific ...
1. **Hello World Camel**:这是Camel的一个入门示例,展示了如何使用Camel创建简单的消息处理流程。 2. **Camel Demo**:通过具体的示例演示了Camel在实际应用场景中的使用方法,包括消息路由、转换、过滤等。 ...
“HelloWorld开发示例”是任何编程语言或框架的经典入门项目。在Fuse中,它可能展示了如何创建、部署和运行一个简单的服务,以此来演示Fuse的基本功能和开发流程。 文件名为“fuse-workshop-master”的压缩包很可能...
在ESB领域,Mule面临着来自Apache Camel、IBM WebSphere MQ、Oracle SOA Suite等强大对手的竞争。然而,Mule凭借其开源属性、丰富的社区支持以及对现代技术栈的兼容性,成功地在众多企业中站稳脚跟。 #### Mule的...
这部分介绍了如何将Akka与Apache Camel集成,实现消息路由和转换。 #### 7. Utilities 这部分介绍了Akka提供的一些实用工具,包括Event Bus、Logging、Scheduler等。 #### 8. How To: Common Patterns 这部分...
- **消息路由框架**:集成 Apache Camel 框架。 - **消息处理**:支持复杂的路由和转换规则。 - **集成外部系统**:轻松连接其他系统。 #### 六、实用工具 ##### 6.1 EventBus - **事件总线**:实现事件的发布与...