`
jnn
  • 浏览: 287613 次
  • 性别: 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有没有运行时动态管理的功能?

相关推荐

Global site tag (gtag.js) - Google Analytics