论坛首页 Java企业应用论坛

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

浏览 5237 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (15) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-01-22  
SOA

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)里面流动而到达指定的目标节点了。

   发表时间: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有没有运行时动态管理的功能?
0 请登录后投票
   发表时间:2009-11-06  
在Camel2.0 中你可以webconsole动态修改route。
在Camel2.1 中你还可以通过JMX来修改route, endpoint的配置信息。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics