if we want to change header of exchange.getIn(), we should put the change logic into processor or bean, not in predicate, looks like in predicate, the exhcange is only a copy of real one, so any change won't be effective.

 

exchange.getIn().removeHeader("subject");
 exchange.getIn().removeHeader("to"); 
<method bean="Perdicate" method="checkMethod" />
 <bean ref="Processor" method="processMethod"></bean>