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

Camel 中的几个重要概念之 CamelContext与CamelTemplate

阅读更多

CamelContext

CamelContext是对Camel 运行时的一个抽象, 一般来说一个应用里面会有一个CamelContext 对象。一个典型的Camel 应用按照下面几个步骤执行。

   1. 创建一个CamelContext对象。
   2. 向CamelContext对象中添加Endpoints或者是Components
   3. 向CamelContext对象中添加路由(routes)规则
   4. 调用CamelContext的start() 方法,这样可以启动Camel内部有关消息发送,接收,处理所使用的线程。
   5. 当调用CamelContext的stop() 方法时,Camel 会将妥善关闭所有endpoint和Camel内部的线程。注意在调用CamelContext.start() 方法时并不一定阻塞, 而是在启动完每个Comonent和Endpoint的内部线程后start() 方法返回。而CamelContext.stop()方法会等待所有Endpoint和Component的内部线程都结束后 stop() 方法才返回。如果你没有在你的Camel 应用程序中调用CamelContext.start() 方法,那么由于内部线程并没有被创建那些消息将不会被处理。 如果你没有在你的Camel应用程序中调用CamelContext.stop()方法,那你你的应用将不会正常退出。如果你在一个JUnit 测试没有调用CamelContext.stop()方法,这可能会造成消息不能被完整地处理,而导致测试运行失败。


CamelTemplate

Camel曾经使用一个叫CamelClient的类来发送消息, 后来为了和其他的open-source项目类似功能的模块例如Spring中 TransactionTemplate 和 JmsTemplate, 命名一致而改名为CamelTemplate。
这个CamelTemplate(注现在已经改名为ProducerTemplate)类对CamelContext进行了一个简单的封装。在CamelTemplate中有向一个Endpoint(将在Endpoint中讨论)发送Message或者Exchange的方法, 这部分的内容将在 Message和Exchange中进行讨论。 CamelTemplate提供了一条向Camel内部路由中的Endpoint发送消息的道路, 这样消息就可以在Camel内部的路由规则(参考 Routes,RouteBuilders 和JAVA DSL)里面流动而到达指定的目标节点了。

分享到:
评论
2 楼 jnn 2009-11-06  
在Camel2.0 中你可以webconsole动态修改route。
在Camel2.1 中你还可以通过JMX来修改route, endpoint的配置信息。
1 楼 worthysu 2009-11-05  
没有实际使用Camel的项目经验,不过觉得使用Java DSL方式来配置消息路由是很强大的一个功能,希望以后能用到它。
请教Camel中,关于使用Java DSL方式配置消息路由的问题:
如果业务场景是用户在系统运行时期望对消息路由有更多干预,也就是Endpoints、Components以及Routes是可以在运行时增删改的。
现在实现这样的功能,是否需要:

1. 创建一个CamelContext对象。
2. 向CamelContext对象中添加Endpoints或者是Components
3. 向CamelContext对象中添加路由(routes)规则
4. 调用CamelContext的start() 方法,这样可以启动Camel内部有关消息发送,接收,处理所使用的线程。
5. 当调用CamelContext的stop() 方法时,Camel 会将妥善关闭所有endpoint和Camel内部的线程。
6. 向CamelContext对象中添加增删改后的Endpoints或者是Components
7. 向CamelContext对象中添加增删改后的路由(routes)规则
8. 继续4

Camel有没有运行时动态管理的功能?

相关推荐

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

    这个"Apache Camel 开发使用指南中文版"压缩包文件很可能是为初学者和有经验的开发者准备的一份详细教程,帮助他们理解和掌握Apache Camel的核心概念和实际应用。 在学习Apache Camel时,首先要理解的是它的核心...

    Camel in action(camel实战)

    - 路由是 Camel 的核心功能之一,它允许开发者定义消息应该如何在不同的端点之间流动。这包括简单的单向路由、复杂的分发路由等。 **3. 数据转换** - Camel 提供了丰富的工具来转换消息的数据格式。无论是简单的...

    Camel实战中文版第四章.pdf

    这一章节对于理解和掌握Camel如何与现有Java系统集成非常重要。 #### 二、ServiceActivator企业设计模式的理解 **ServiceActivator** 是一种常用的企业集成设计模式,其核心思想是在消息传递过程中通过调用业务逻辑...

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

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

    camel in action 中文版 第一章

    Camel 的基本原则之一是不会假设任何你需要处理的数据,这是很重要的一点,因为它给你们开发者一个集成任何系统的一个机会,不需要转换你的数据为另外的一种公认格式。 1.2 Camel 的主要特点 Camel 提供了高水平的...

    ApacheCamel-JDBC

    在"Apache Camel-JDBC"这个主题中,我们可以深入探讨以下几个关键知识点: 1. **Apache Camel 概述**: Apache Camel 提供了一个丰富的组件库,涵盖了各种协议和数据格式,如HTTP、FTP、JMS、MQTT、XML和JSON等。...

    [Camel实战].(Camel.in.Action).Claus.Ibsen&Jonathan;.Anstey.文字版

    ### Apache Camel 实战知识点概述 #### 一、Apache Camel 简介 - **定义**:Apache Camel 是一个强大的开源框架...书中不仅提供了丰富的理论知识,还有大量的实践案例和代码示例,是学习Camel不可或缺的经典教材之一。

    camel文档

    - **简介**:介绍Apache Camel的基础概念及其在企业级应用中的价值。 - **核心特性**:阐述Camel的主要功能和优势,包括其支持的各种协议、数据转换能力、错误处理机制等。 - **入门示例**:通过一个简单的示例来...

    GSM0978 Camel协议文档

    Leg ID是Camel协议中的一个重要概念,用于标识一次呼叫过程中涉及的不同通信链路或“腿”。这部分内容详细介绍了Leg ID的定义、分配原则及其在呼叫处理过程中的具体应用,这对于理解和实现复杂的呼叫转移和路由功能...

    camel 手册

    - **基本概念介绍**:解释了 Camel 中的核心概念,例如 Exchange、Message、Route、Endpoint 等。 - **示例代码分析**:提供了实际的示例代码,展示了如何使用 Camel 进行消息处理和路由配置。 #### 四、架构设计 ...

    apache camel 集成组件 教程

    《Camel in Action》是一本由 Claus Ibsen 和 Jonathan Anstey 共同撰写的书籍,这本书是学习 Apache Camel 的重要参考资料之一。书中涵盖了以下内容: - **基础知识介绍:** 第一部分“First Steps”通过两个章节...

    Camel_Camel3Camel6函数_

    在MATLAB编程环境中,"Camel3Camel6函数"是指用于特定数学计算或数据分析的一系列函数。这些函数可能涉及到曲线拟合、数值优化、数据处理等应用,尤其是在处理涉及非线性问题时,比如模拟生物体的驼峰形状、物理学中...

    Camel in action PDF和源代码

    这些代码通常按照章节组织,每个章节的代码对应于该章讨论的主题,这样读者可以在实践中学习Camel的各种特性。 学习Apache Camel能够提升开发者在企业级集成项目中的能力,因为Camel的设计理念是重用和组合现有技术...

    Camel_应用开发文档.pdf

    * 微服务架构:Camel 能够帮助构建微服务架构,例如将多个微服务集成到一个系统中。 * IoT 应用:Camel 能够帮助构建 IoT 应用,例如将 sensor 数据从一个系统传输到另一个系统。 7. Camel 依赖 Camel 依赖是指在...

    Apache Camel 源码分析.rar

    Apache Camel 是一个强大的开源企业集成库,它提供了一种声明式的方式来定义路由和转换数据,使得构建复杂的分布式系统变得更加简单。Camel 使用一种名为“DSL”(Domain Specific Language)的语法规则,允许开发者...

    姜宁-我和Apache Camel这些年/Years of Apache Camel and I

    随后文档中列出了Camel框架的几个重要版本发布时间点: - Apache Camel 1.0 在2007年6月发布; - Apache Camel 2.0 在2009年8月发布; - Apache Camel 2.4 在2010年7月发布; - Apache Camel 2.10.x 在2012年发布; ...

    Apache Camel 开发指南.rar

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

    Camel in Action ch1

    - 展示如何通过几个简单的步骤创建一个Camel应用程序。 - 这个示例通常包括配置路由、处理消息等基本操作。 - **Camel的架构和概念** - 解释Camel的基本组件,如路由、端点、处理器等。 - 探讨Camel的工作原理...

    apache_camel_tutorial

    - 路由是 Camel 中的核心概念之一。 - 它们定义了消息如何在不同的端点之间流动。 **3. 语言选择**: - Camel 支持多种语言来定义路由和处理逻辑,包括 Java、XML、Groovy 等。 **4. 过滤器**: - Camel 提供了...

    ApacheCamel-Timer

    Timer 组件是 Apache Camel 中的一个重要部分,它提供了定时触发事件的功能,类似于 Java 中的 javax.swing.Timer 或者 Quartz Scheduler。 在 Apache Camel 中,Timer 组件主要用于创建周期性的事件源,这些事件...

Global site tag (gtag.js) - Google Analytics