// we must create a new map since all the messages will get a new delivery tag when they are redelivered
Collection<UnacknowledgedMessage> messagesToBeDelivered = _unacknowledgedMessageMap.cancelAllMessages();
// Deliver these messages out of the transaction as their delivery was never
// part of the transaction only the receive.
TransactionalContext deliveryContext = null;
if (!messagesToBeDelivered.isEmpty())
{
if (_log.isInfoEnabled())
{
_log.info("Requeuing " + messagesToBeDelivered.size() + " unacked messages. for " + toString());
}
if (!(_txnContext instanceof NonTransactionalContext))
{
// if (_nonTransactedContext == null)
{
_nonTransactedContext =
new NonTransactionalContext(_messageStore, _storeContext, this, _returnMessages, _browsedAcks);
}
deliveryContext = _nonTransactedContext;
}
else
{
deliveryContext = _txnContext;
}
}
for (UnacknowledgedMessage unacked : messagesToBeDelivered)
{
if (unacked.queue != null)
{
// Ensure message is released for redelivery
unacked.message.release(unacked.queue);
// Mark message redelivered
unacked.message.setRedelivered(true);
// Deliver Message
deliveryContext.deliver(unacked.message, unacked.queue, false);
// Should we allow access To the DM to directy deliver the message?
// As we don't need to check for Consumers or worry about incrementing the message count?
// unacked.queue.getDeliveryManager().deliver(_storeContext, unacked.queue.getName(), unacked.message, false);
}