public boolean put(Message message) throws DestinationClosedException {
		boolean isSuccessful = super.put(message);
		if (!isSuccessful) {
			if (discardPolicy == MessageDiscardPolicy.DiscardOldest) {
				// Until successful insert
				while (!queue.offer(message)) {
					queue.poll();
				}
				expiryUtil.scheduleForExpiry(message);
			}
		} else {
			expiryUtil.scheduleForExpiry(message);
		}
		permits.release();
		logger.debug("Message Added to the queue:" + message.getMessage());
		return true;
	}