We use currently Camel 2.17.7 and will upgrade to 2.20.2. With 2.20.2 we have a new unexpected behaviour. We use in some routes ExchangePattern.InOnly. To remove unwanted headers, we set our required headers and body to Exchange.OUT. In the next bean we always get the "cleaned" exchange object where in the IN part of the exchange only our expected headers are available. 1. Due to the adaption from CAMEL-10424<https://issues.apache.org/jira/browse/CAMEL-10424> all headers from IN and OUT are merged in Method "MethodInfo.fillResult" because exchange objects will be handled as OUT capable when exchange.hasOut()=true. ... // the bean component forces OUT if the MEP is OUT capable boolean out = ExchangeHelper.isOutCapable(exchange) || exchange.hasOut(); ...
I expected that no "old" headers are available in the next bean and that setting from OUT to IN is only done in Method "PipelineHelper.createNextExchange(...)": public static Exchange createNextExchange(Exchange previousExchange) { Exchange answer = previousExchange; // now lets set the input of the next exchange to the output of the // previous message if it is not null if (answer.hasOut()) { answer.setIn(answer.getOut()); answer.setOut(null); } return answer; } Is this adaptation a break against the message exchange pattern or does we use this in a wrong way? Thank you in advance!