Hello, I'm trying to add some ancillary information to an Exchange getting picked up from a dead message queue for retries. I'm basically trying to add a retry count so after a certain amount of pickups from the dead queue the message is forwarded to a final queue and remains there for manual inspection. This is the code that I have that does this
@RoutingSlip public final String[ ] routeEvent( final Exchange exchange , final Event event ) { final Exception cause = exchange.getProperty( Exchange. EXCEPTION_CAUGHT , Exception.class ); final Date createdDate = exchange.getProperty( Exchange. CREATED_TIMESTAMP , Date.class ); Integer retryCount = exchange.getProperty( TOTAL_RETRIES , Integer. class ); final String[ ] route; if( retryCount == null ) { retryCount = 0; } if( retryCount > MAX_TOTAL_RETRIES ) { LOG.info( "Max retry count of {} reached for message {} discarding" , retryCount , exchange.getExchangeId( ) ); route = reallyDead; } else { exchange.setProperty( TOTAL_RETRIES , ++retryCount ); LOG.info( "Retrying dead message, message created {}, exception " , createdDate , cause ); LOG.info( "{} retries left for message id {} " , MAX_TOTAL_RETRIES - retryCount , exchange.getIn( ) .getMessageId( ) ); route = super.routeEvent( event ); } return route; } While testing, the retryCount is always 0, which implies that the Exchange modified is a copy and not the one I modified in the first pass of a failed message. I guess my question is, am I trying to do something that there's already some DSL, or am I simply using the Exchange the wrong way, and I have to pass it on somehow? Thank you, Ioannis