public void PopMessages(int numberOfMessages)
        {
            _readList.Clear();
            if (numberOfMessages == 0)
            {
                return;
            }

            lock (_syncLock)
            {
                _queue.Dequeue(_readList, numberOfMessages);
                _queueCount -= _readList.Count;
            }
        }
        /// <summary>
        ///     Remove messages from the queue
        /// </summary>
        /// <param name="messages"></param>
        /// <param name="maxNumberOfMessages"></param>
        public void Dequeue(IList <object> messages, int maxNumberOfMessages)
        {
            if (messages == null)
            {
                throw new ArgumentNullException("messages");
            }
            if (maxNumberOfMessages == 0)
            {
                throw new ArgumentOutOfRangeException("maxNumberOfMessages", maxNumberOfMessages,
                                                      "Must specify a valid count.");
            }

            lock (_syncLock)
            {
                var bufferList = new List <byte[]>();
                _queue.Dequeue(bufferList, maxNumberOfMessages);
                foreach (var buffer in bufferList)
                {
                    var obj = _itemSerializer.Deserialize(buffer);
                    messages.Add(obj);
                }
            }
        }