code: public boolean redeliverLocked( TransactionItem[] items , MessageLockSet locks ) throws JMSException
      {
      	checkNotClosed();
      	checkTransactionLock();
      	
      	int volatileRollbacked = 0;
      	int persistentRollbacked = 0;
  
          synchronized (storeLock)
          {
              for (int n = 0 ; n < items.length ; n++)
              {
              	TransactionItem transactionItem = items[n];
              	if (transactionItem.getDestination() != this)
              		continue; // Not for us
              	
              	MessageStore store = transactionItem.getDeliveryMode() == DeliveryMode.PERSISTENT ? persistentStore : volatileStore;
              	int handle = transactionItem.getHandle();
              	
              	// Retrieve message content
             		AbstractMessage msg = store.retrieve(handle);
             		
             		// Update redelivered flag both in memory and message store
             		msg.setJMSRedelivered(true);
             		handle = store.replace(handle, msg);
             		
              	if (redeliveryDelay > 0)
              	{
              	    // Keep the message locked so it cannot be re-consumed immediately            	    
              		// and schedule message unlock after redeliveryDelay milliseconds
              		redeliveryTimer.schedule(new RedeliveryTask(msg,store,handle), 
              				                 redeliveryDelay);
              	}
              	else
              	{
              		// Store lock for later release
              		locks.add(handle, store.getDeliveryMode(), this, msg);
              	}
  
                  if (transactionItem.getDeliveryMode() == DeliveryMode.PERSISTENT)
                  	persistentRollbacked++;
                  else
                  	volatileRollbacked++;
              }
          }
          rollbackedGetCount.addAndGet(volatileRollbacked + persistentRollbacked);
  
          if (persistentRollbacked > 0 && requiresTransactionalUpdate())
          {
          	pendingChanges = true;
          	return true;
          }
          else
          	return false;
      }
docs: Rollback get operations on this queue (messages are unlocked)..
  Consumers are notified of rollbacked messages availability
  @return true if a commit is required to ensure data safety