欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Camel 中的几个重要概念之 CamelContext与CamelTemplate 博客分类: Camel ExchangeSpring配置管理junit项目管理 

程序员文章站 2024-02-22 14:12:40
...

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