예제 #1
0
        /// <summary>
        /// Dequeue a message from RabbitMQ.
        /// </summary>
        /// <returns>A dequeued message or null if there weren't any.</returns>
        public static MtaQueuedMessage Dequeue()
        {
            BasicDeliverEventArgs ea = RabbitMqManager.Dequeue(RabbitMqManager.RabbitMqQueue.OutboundWaiting, 1, 100).FirstOrDefault();

            if (ea == null)
            {
                return(null);
            }

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

            qmsg.RabbitMqDeliveryTag = ea.DeliveryTag;
            qmsg.IsHandled           = false;
            return(qmsg);
        }
예제 #2
0
        /// <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 MtaMessageCollection Dequeue(int maxItems)
        {
            List <BasicDeliverEventArgs> items    = RabbitMqManager.Dequeue(RabbitMqManager.RabbitMqQueue.Inbound, maxItems, 1 * 1000);
            MtaMessageCollection         messages = new MtaMessageCollection();

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

            foreach (BasicDeliverEventArgs ea in items)
            {
                MtaMessage msg = Serialisation.Deserialise <MtaMessage>(ea.Body);
                msg.RabbitMqDeliveryTag = ea.DeliveryTag;
                messages.Add(msg);
            }

            return(messages);
        }