in-Message 复制到 out-Message

in-Message copied in out-Message

我的 RouteBuilder 中有这条简单的路线。

from("amq:MyQueue").routeId(routeId).log(LoggingLevel.DEBUG, "Log: ${in.headers} - ${in.body}")

如 HTTP 组件文档中所述:

Camel will store the HTTP response from the external server on the OUT body. All headers from the IN message will be copied to the OUT message, ...

我想知道这个概念是否也适用于amq-component、routeId和log? IN 总是被复制到 OUT 是默认行为吗?

谢谢, 哈迪

首先:IN 和 OUT 消息的概念在 Camel 3.x 中被弃用

Camel 3 migration guide and also annotated on the getOut method of the Camel Exchange.

中提到了这个

但是,它(还)没有被删除,但是您可以从中得到什么:不要关心 OUT 消息。使用 getMessage 方法,不再使用 getIngetOut

回答你的问题:

是的,大多数组件都是这样

  • 路由中的每一步都接收 (IN) 消息并对其进行处理
  • body 通常会被新的处理结果覆盖
  • 通常会保留 header,可以添加新的 header

因此,当 Camel Exchange 遍历路由时,通常 body 会不断更新,并且 header 列表会增长

但是,aggregator 等某些组件会根据 AggregationStrategy 创建新消息。在这种情况下,不会自动复制任何内容,您必须根据需要实施策略。