Posts

Showing posts from January, 2018

Processing redelivery of AMQP messages

Spring AMQP SimpleMessageListenerContainer (SMLC)  is session transacted,  it has a AckMode field whose default value is AUTO. AUTO Acknowledge ensures that if a message processing fails with an exception then it sends NACK and requeues the message back to queue. Your application may need to handle the retry logic, you just cant let a message fail forever (unless you have a requirement to not lose any message). Here is how you can handle it   Create a MessageListener class implementing the interface org.springframework.amqp.core.MessageListener. In its onMessage  check the basic property    boolean isRedelivered = amqpMessage . getMessageProperties (). getRedelivered ();    You can get the redelivery count from deliveryTag       long deliveryTag = amqpMessage .getMessageProperties(). getDeliveryTag ();  Now write your logic    if(deliveryTag >= maxRedeliveryCount) {        //Store ...