I am in the process of evaluating hornetQ for our async messaging framework. I am researching on the reliable delivery feature. I understand redelivery can happen when
1. in transaction case, when a rollback called on session
2. in non-transaction case, when session is closed, all the non-ACKed messages will be redelivered.
But I looked through JMS doc and HornetQ user manual, there is no mention how to deal with runaway consumer, i.e. a consumer code takes a long time to finish that excceeds my SLA, while maintaining the session (or didn't get chance to call rollback). In case this runaway is not a systematic problem (i.e. a redelivery can solve the problem), set a redelivery timeout can help. Is there such mechanism in place?
it depends what you mean by a runaway consumer, if the client is still alaive and connected its up to you as the programmer to handle this, if the client has died then the server will detect this(after TTL) and requeue any messages not acked when it cleans up the consumers resources.