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
方法,不再使用 getIn
和 getOut
。
回答你的问题:
是的,大多数组件都是这样
- 路由中的每一步都接收 (IN) 消息并对其进行处理
- body 通常会被新的处理结果覆盖
- 通常会保留 header,可以添加新的 header
因此,当 Camel Exchange 遍历路由时,通常 body 会不断更新,并且 header 列表会增长 。
但是,aggregator 等某些组件会根据 AggregationStrategy 创建新消息。在这种情况下,不会自动复制任何内容,您必须根据需要实施策略。
我的 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
方法,不再使用 getIn
和 getOut
。
回答你的问题:
是的,大多数组件都是这样
- 路由中的每一步都接收 (IN) 消息并对其进行处理
- body 通常会被新的处理结果覆盖
- 通常会保留 header,可以添加新的 header
因此,当 Camel Exchange 遍历路由时,通常 body 会不断更新,并且 header 列表会增长 。
但是,aggregator 等某些组件会根据 AggregationStrategy 创建新消息。在这种情况下,不会自动复制任何内容,您必须根据需要实施策略。