Exchange.setProperty() expects an Object. Perhaps box your retry_count in an Integer?
On Fri, Feb 25, 2011 at 3:43 AM, Yiannis Mavroukakis <imavrouka...@gameaccountnetwork.com> wrote: > 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 >