/// <summary>
        /// Dequeues a collection of inbound messages from RabbitMQ.
        /// </summary>
        /// <param name="maxItems">The maximum amount of messages to dequeue.</param>
        /// <returns>The dequeue messages.</returns>
        public static async Task <IList <MtaMessage> > Dequeue(int maxItems)
        {
            List <BasicDeliverEventArgs> items    = RabbitMqManager.Dequeue(RabbitMqManager.RabbitMqQueue.Inbound, maxItems, 1 * 1000);
            IList <MtaMessage>           messages = new List <MtaMessage>();

            if (items.Count == 0)
            {
                return(messages);
            }

            foreach (BasicDeliverEventArgs ea in items)
            {
                MtaMessage msg = await Serialisation.Deserialise <MtaMessage>(ea.Body);

                msg.RabbitMqDeliveryTag = ea.DeliveryTag;
                messages.Add(msg);
            }

            return(messages);
        }
        /// <summary>
        /// Dequeue a message from RabbitMQ.
        /// </summary>
        /// <returns>A dequeued message or null if there weren't any.</returns>
        public static async Task <MtaQueuedMessage> Dequeue()
        {
            BasicDeliverEventArgs ea = null;

            try
            {
                ea = RabbitMqManager.Dequeue(RabbitMqManager.RabbitMqQueue.OutboundWaiting, 1, 100).FirstOrDefault();
            }
            catch (Exception)
            {
                ea = null;
            }
            if (ea == null)
            {
                return(null);
            }

            MtaQueuedMessage qmsg = await Serialisation.Deserialise <MtaQueuedMessage>(ea.Body);

            qmsg.RabbitMqDeliveryTag = ea.DeliveryTag;
            qmsg.IsHandled           = false;
            return(qmsg);
        }