Camel in-Message已复制到out-Message

sg2wtvxw  于 2022-11-07  发布在  Apache
关注(0)|答案(1)|浏览(153)

我的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?
谢谢你,哈迪

wztqucjr

wztqucjr1#

首先是:在Camel 3.x中,IN和OUT消息的概念已过时
Camel 3迁移指南中提到了这一点,并且在Camel Exchange的getOut方法上也做了注解。
然而,它不是(尚未)删除,但你可以从它:不要在意OUT消息。使用getMessage方法,并且不要再使用getIngetOut
要回答您的问题:
是的,大多数组件的行为都是这样的

  • 路由中的每一步都获取(IN)消息并对其进行处理
  • 通常会使用新的处理结果覆盖正文
  • 标头通常会保留,但可以添加新标头

因此,当Camel Exchange遍历路由时,通常正文会不断更新,标头列表也会不断增长
但是,某些组件(如aggregator)会根据AggregationStrategy创建新消息。在这种情况下,不会自动复制任何内容,您必须根据需要实施策略。

相关问题