messagePtrs.remove(queueEntry);
lastMessagePointersPerContainer.put(pointer.getContainer(), pointer);
unconsumedMessagesDispatched.decrement();
TransactionManager.getContexTransaction().addPostRollbackTask(new TransactionTask(){
public void execute() throws Throwable {
unconsumedMessagesDispatched.increment();
MessagePointer p = new MessagePointer(pointer.getContainer(), pointer.getMessageIdentity());
p.setRedelivered(true);
messagePtrs.add(p);
dispatch.wakeup(DurableTopicSubscription.this);
lastMessageIdentity = pointer.getMessageIdentity();
}
});
TransactionManager.getContexTransaction().addPostCommitTask(new TransactionTask(){
public void execute() throws Throwable {
// now lets tell each container to update its lastAcknowlegedMessageID
for (Iterator iter = lastMessagePointersPerContainer.entrySet().iterator(); iter.hasNext();) {
Map.Entry entry = (Map.Entry) iter.next();
TopicMessageContainer container = (TopicMessageContainer) entry.getKey();