`
sunandmoon
  • 浏览: 13854 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
社区版块
存档分类
最新评论

Camel小例子

阅读更多
最近在看一些Camel的东西,在研究它的时候可以感觉到网上的例子很少。下面我总结了一下官方的几个小例子提出来大家一起讨论讨论。
POJO Messaging Example
说明:这个例子展示了如果你不想学习camel的高级DSL语言,也可以完成同样的功能。因为camel提供了一系列的注解让我们轻松的produce,consume或是route  消息toendpoints。

例子讲解:
通过下面这幅图来说明整个例子的流程:


第一步:SendFileRecordsToQueueBean从./src/data directory目录下取得新文件,目录下有三个文件因此将产生三个消息。如下面的代码所示,the @Consume annotation注解将把任何从./src/data directory目录下新来的文件发送到onFileSendToQueue method。
public class SendFileRecordsToQueueBean {
    @Produce(uri = "activemq:personnel.records")
    ProducerTemplate producer;

    @Consume(uri = "file:src/data?noop=true")
    public void onFileSendToQueue(String body) {
        producer.sendBody(body);
    }
}

第二步:the SendFileRecordsToQueueBean文件形式的内容以字符串的形式发送的personnel.records JMS queue的队列里面去。(这些工作是通过后台的嵌入模式的activemq服务器实例完成的)。字符串到jms message的转换是自动完成的。The @Produce annotation注解用于访问activemq endpoint。

第三步:the DistributeRecordsBean(如下代码所示)从the personnel.records queue取得消息。the @Consume annotation注解再一次被应用,被用于从activemq
Endpoint取得消息。
public class DistributeRecordsBean {
    @Consume(uri = "activemq:personnel.records")
    @RecipientList
    public String[] route(@XPath("/person/city/text()") String city) {
        if (city.equals("London")) {
            return new String[] {"file:target/messages/emea/hr_pickup",
                                 "file:target/messages/emea/finance_pickup"};
        } else {
            return new String[] {"file:target/messages/amer/hr_pickup",
                                 "file:target/messages/amer/finance_pickup"};
        }
    }
}
我们在上面的代码中可以看到@RecipientList annotation这个注解。这个注解使被注解的方法称为一个Recipient List EIPc(即类似一个企业信息集成门户),在这个门户里返回一系列值给the recipients(返回的值可以是String[], List<String>, URI[], etc)。这个注解对于创建自定以的动态接收列表是很有用的。在这个例子的第4步中,我们选择city这个属性(通过@XPath)并且提供一系列的接收者。
例如folk来自London,他们的files将被发送到emea region地区。(file:target/messages/emea/...).其他的被放到the AMER region (file:target/messages/amer/...).
If you have messages that are not XML, don't fret! Camel has ways to get information out of arbitrary message payloads. For instance, you can try using the @Bean annotation to peek at the message using your own Java bean.
    @Consume(uri = "activemq:personnel.records")
    @RecipientList
    public String[] route(@Bean("cityExtractorBean") String city) {
        if (city.equals("London")) {

Check out Parameter Binding Annotations for more information on this.
最后:After running the example, browse to the target/messages directory to see where the messages were saved.
分享到:
评论

相关推荐

    camel-cxf调用和发布webservice例子

    用camel-cxf调用webservice和发布一个webservice接口例子,首先启动QueryServiceMain主函数启动webservice接口,然后启动测试类TestWebservice。例子主要是实现java代码实现camel调用webservice接口

    Camel所有示例

    Apache Camel 是一个流行的开源集成框架,它允许开发者以声明式的方式构建企业级应用程序的路由和消息转换。这个压缩包文件“Camel示例”显然包含了Camel与多个组件结合使用的各种示例,如Camel Netty、Camel ...

    ApacheCamel-Timer

    - 在这个例子中,`myTimer` 是定时器的名称,`fixedRate=true` 表示按照固定速率执行,`period=1000` 指定了间隔时间为1秒。 6. **Camel Timer 组件的高级特性**: - 可以通过 Camel 的 XML 配置或 Java DSL 来...

    camel文档

    - **案例研究**:通过具体例子展示Beans在Camel中的实际应用。 - **第5章:错误处理** - **异常管理**:讲解Camel中异常的捕获与处理机制,以及如何设计健壮的错误处理流程。 - **重试策略**:探讨不同的重试策略...

    camel-java-http

    在这个例子中,路由可能包括一个或多个HTTP请求,用于获取、发送数据或与外部服务交互。 `TestHttp` 类很可能是用来进行单元测试的,确保HTTP路由的功能正常工作。在Camel中,我们可以使用JUnit或者其他的测试框架...

    Camel in Action ch1

    - 提供实用的例子来展示这些高级路由技术的应用。 - **路由调试和优化** - 提供工具和技术来帮助开发者调试路由问题。 - 探讨如何优化路由性能,提高系统的效率。 #### 四、第二部分核心Camel - **第三章:...

    xslt实例(实际例子)

    在这个“xslt实例(实际例子)”的压缩包中,你将找到一系列用于学习和实践XSLT的实例,非常适合入门和中级学习者。 首先,让我们了解一下XSLT的基本概念: 1. **模板匹配**:XSLT的核心是模板匹配。通过定义模板,...

    01-ApacheCamel-HelloWorld

    在这个例子中,路由从名为 `direct:start` 的端点开始,模拟一个客户端发起请求。设置 HTTP 方法为 GET,并指定期望的响应类型为 text/plain。然后,路由将请求发送到 `http://localhost:8080/hello` 的 URL,该 ...

    Camel in action

    本章首先介绍了Apache Camel的历史和发展背景,然后通过几个简单的例子展示了Camel的基本用法,包括如何定义路由、处理消息等。通过这些示例,读者可以快速了解Camel的工作原理。 - **第2章:使用Camel进行路由**...

    Camel in Action

    通过具体的例子来展示Camel的功能和优势,为后续章节的学习奠定基础。 - **第2章:使用Camel进行路由(Routing with Camel)** 重点介绍了Camel的核心特性之一——路由机制。详细解释了如何定义消息路由规则,并...

    apache-camel-1.0.0.zip

    这个简单的例子展示了如何从"/input"目录读取文件,然后将内容输出到日志,并最终保存到"/output"目录。 总的来说,Apache Camel 1.0.0版为开发者提供了强大的集成工具,使得在不同的系统和协议间建立连接变得更加...

    Camel示例说明

    1. **ActiveMQ Camel Tomcat 示例**:此示例展示了如何在运行于Apache Tomcat的应用程序中嵌入Apache ActiveMQ和Camel,提供了一个将消息系统与Web应用结合的例子。 2. **Aggregate 示例**:展示的是Camel 2.3中的...

    camel-JDBC

    在这个例子中,定时器触发路由,执行一个更新操作。`sql:execute`端点接收SQL更新语句并执行。 在下载并解压"camel-JDBC"项目后,你需要根据自己的数据库环境修改数据源配置,如数据库URL、用户名和密码。然后,...

    camel-manual-2.4.0, 用户手册

    这部分包含了一系列实用的例子,旨在帮助开发者解决常见的集成问题,例如: - **文件传输**:演示如何使用 Camel 进行文件传输。 - **消息转换**:展示如何将不同格式的消息转换为统一格式。 - **异步处理**:介绍...

    Apache Camel框架 HTTP相关的jar包

    在这个例子中,Camel会从`direct:start`端点接收消息,设置HTTP请求方法为GET,并指定请求URL。然后,它会向`http://localhost:8080`发送请求,并打印出响应内容。 除了基本的HTTP操作,Camel还支持更复杂的用例,...

    Camel-Blueprint-Demo

    5. **模块化设计**:分析项目的模块结构,了解如何将复杂的集成问题分解为更小、更易管理的部分。 6. **单元测试和集成测试**:查看项目中的测试用例,学习如何对Camel路由进行单元测试和集成测试,确保路由逻辑的...

    serviceMix小例子

    在这个小例子中,我们将会探讨如何利用Camel组件在ServiceMix上构建一个简单的工作流程。 Camel是ServiceMix的核心部分,它是一个强大的路由和消息转换引擎,允许开发者使用简单的DSL(领域特定语言)来定义数据流...

    apache-camel:阿帕奇骆驼的例子

    这个例子很可能是 Apache Camel 的一个项目源代码仓库,名为 "apache-camel-master",通常包含一系列示例代码,帮助开发者理解和学习如何在实际应用中使用 Apache Camel。 Apache Camel 的核心理念是“组件化编程”...

Global site tag (gtag.js) - Google Analytics