Yes.  The way we are doing it is adding a bit of metadata into the message to
keep a redelivery count.  This is added only when we want to do a
redelivery.

Our framework sits on top of the NMS ActiveMQ provider (.NET).  It parses
the metadata from the message.  This redelivery logic is abstracted away
from the many consumers using our framework and their main logic.  It
executes a redelivery policy before delegating the work to the consumer to
actually process the message.  

If the redelivery count is exhausted according to the redelivery policy, we
simply acknowledge the message without re-cloning, hence redelivering it.

As I've been coding it I wonder how necessary it really is to have this
functionality though.  If you have enough consumers in your cluster it seems
the transactional mode would be sufficient.  It just so happens our previous
messaging framework retried messages by placing them at the end of the queue
so this is more of legacy support than anything.

Regards


Geoffrey Arnold-2 wrote:
> 
> Hey Mark,
> 
> We ended up opting to put the message back on the end of the queue  
> instead of rolling back, but this leads to repeated reprocessing of  
> the message.  My guess is that you have solved this with metadata:
> 
>> Our framework is sophisticated enough to
>> manage redeliveries in this way by adding some redeliveredCnt  
>> metadata to
>> the message each time it is cloned.
> 
> Can you elaborate?
> 
> Thanks,
> Geoff.
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Transactions-and-redelivery-tp25915300p25930878.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to