Apache Camel术语的细微之处

时间:2013-01-07 12:11:01

标签: java apache-camel

我正试图围绕Apache Camel,在今天早上花了一些时间阅读在线Camel文档和Javadocs之后,我有一些问题似乎无法找到答案。< / p>

  1. 所有端点都是消费者或生产者(或两者)都是真的吗?所有处理器都是端点是真的吗?在那儿 任何非处理器的端点?
  2. 邮件标头和Exchange之间有什么区别?交换被认为是“消息容器”,但是它与头部包含的元数据有何不同?
  3. 实施自己的消息/交换是否典型?如果是这样,那么这样做的例子是什么,并从典型的DefaultMessageDefaultExchange中“偏离”?
  4. 提前致谢。

2 个答案:

答案 0 :(得分:2)

首先要做的事情:一个好的建议是阅读Camel in Action一书,它解释了大多数基本概念。网上有免费的第一章,解释了您提出的问题类型http://manning.com/ibsen/

  1. 端点引用component和某些特定于组件的选项,例如地址等。然后,端点可以(取决于组件)充当消费者(例如"servlet:path/to/web/service")或制片人(例如"http://localhost/path/to/web/service")或两者(例如"jms:queue:orderQueue")。

  2. Camel消息中也有标题。交易所超过整个路线,交换属性也将保留整个路线。 Camel中的消息头是一个有点不同的概念。它们通常紧密映射到所使用的组件 - 即HTTP端点可能设置/更改标头(例如COOKIES等),而HTTP标头对交换属性没有影响,因为它们仅用于camel路由和camel逻辑。交换还包含其他非消息特定的事情,例如例外。

  3. 开发新的消息实现非常罕见。当您实现自己的组件/协议并且需要在消息中保留辅助对象的实例时,可能有一点延伸DefaultMessage。即使在开发组件时,通常也不会这样做。我从来没有听说过Exchange的任何自定义实现,如果没有充分的理由你通常不会这样做。

答案 1 :(得分:2)

@DirtyMikeAndTheBoys你写道:

  

所有处理器都是端点是真的吗?有没有端点   那不是处理器吗?

事实并非如此。 Camel术语中的“处理器”是回调,它们是某种模式的一部分(如聚合器,消息通道或RoutingSlip)。 处理器会在路径中流动时收到消息,并对消息执行某些操作。邮件包含在 Exchange 中。

端点是路由接收消息(消费者端点)的位置以及发送已处理消息的位置(到端点)。因此,当您在路径中看到“来自”子句时,Camel引擎正在使用与中定义的端点实例相关联的“消费者”实例'条款。它实际上取决于端点实现是否在Camel上下文的“from”子句中出现给定端点的每个位置创建/重用新的使用者实例。

同样,当' To '子句中提到相同的端点时,将使用 Producer 实例(创建/重用)并保持与端点关联实例