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>