我的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?
谢谢你,哈迪
1条答案
按热度按时间wztqucjr1#
首先是:在Camel 3.x中,IN和OUT消息的概念已过时。
Camel 3迁移指南中提到了这一点,并且在Camel Exchange的getOut方法上也做了注解。
然而,它不是(尚未)删除,但你可以从它:不要在意OUT消息。使用
getMessage
方法,并且不要再使用getIn
和getOut
。要回答您的问题:
是的,大多数组件的行为都是这样的
因此,当Camel Exchange遍历路由时,通常正文会不断更新,标头列表也会不断增长。
但是,某些组件(如aggregator)会根据AggregationStrategy创建新消息。在这种情况下,不会自动复制任何内容,您必须根据需要实施策略。