code: @Override
  	public final void close() throws JMSException
      {
      	synchronized (closeLock)
  		{
  	    	if (closed)
  	    		return;
  	    	closed = true;
  		}
      	
      	ActivityWatchdog.getInstance().unregister(this);
      	
      	synchronized (storeLock)
  		{
  	        if (volatileStore != null)
  	        {
  	            volatileStore.close();
  	            
  	            // Delete message store if the queue was temporary
  	            if (queueDef.isTemporary())
  	                volatileStore.delete();
  	        }
  	        if (persistentStore != null)
  	        {
  	            persistentStore.close();
  	            
  	            // Delete message store if the queue was temporary
  	            if (queueDef.isTemporary())
  	                persistentStore.delete();
  	        }
  		}
      	
      	// Create a snapshot to avoid concurrent modification
      	List<LocalMessageConsumer> consumers;
      	consumersLock.readLock().lock();
      	try
      	{
      		if (localConsumers.isEmpty())
      			return;
      		
      		consumers = new ArrayList<>(localConsumers);
      	}
      	finally
      	{
      		consumersLock.readLock().unlock();
      	}	
      		
      	// Close all consumers
      	for (int n=0;n<consumers.size();n++)
          {
  	        LocalMessageConsumer consumer = consumers.get(n);
  	        try
  	        {
  	            consumer.close();
  	        }
  	        catch (JMSException e)
  	        {
  	            ErrorTools.log(e, log);
  	        }
          }
      }
docs: /*
  (non-Javadoc)
  @see net.timewalker.ffmq4.local.destination.AbstractLocalDestination#close()