交换只在Camel使用过一次吗?

时间:2012-01-20 15:20:42

标签: apache-camel

首先是我想要做的基本出线

  1. 我有一个MQ,我想从
  2. 中读取消息
  3. 预处理XML,并在Exchange上设置属性
  4. 发出HTTP请求
  5. 处理来自http请求和初始交换中的属性的数据
  6. 将其置于出站邮件队列
  7. 我一直在寻找确认每次从初始MQ读取消息时将创建新Exchange。我没有找到任何明确说明的内容,但我假设并且想知道是否有人可以确认或否认是这种情况。

    交换只使用一次吗?并且路由是否为每条消息创建了一个新的交换?

    谢谢!

    编辑:当然,我的对然后立即谷歌搜索并找到答案。是的,它是唯一的,我们在这里找到了关于Exchange API的文档http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Exchange.html

1 个答案:

答案 0 :(得分:3)

在大多数情况下,为路径的每个使用者线程创建Exchange。一个例外(我所知道的)是使用“直接”端点,它将重用现有的Exchange(如果请求中已存在一个)......

例如,这两条路线链接在一起(通过直接)。第一条路线将创建一个新的Exchange并将其传递到第二条路线(请参阅记录的exchangeId)......

from("direct:route1").log("route1.exchangeId=${exchangeId}").to("direct:route2");
from("direct:route2").log("route2.exchangeId=${exchangeId}");

但是,如果您将它们与任何其他组件(seda,vm,activemq等)链接在一起,那么将为第二条路径创建一个新的Exchange。

from("seda:route1").log("route1.exchangeId=${exchangeId}").to("seda:route2");
from("seda:route2").log("route2.exchangeId=${exchangeId}");