Exemplo n.º 1
0
        public virtual BasicGetResult GetMessage(string queueName, bool noAck)
        {
            try
            {
                if (!Queues.Contains(queueName))
                {
                    Channel.RegisterQueueByName(queueName);
                    Queues = new HashSet <string>(Queues)
                    {
                        queueName
                    };
                }

                var basicMsg = Channel.BasicGet(queueName, noAck: noAck);

                GetMessageFilter?.Invoke(queueName, basicMsg);

                return(basicMsg);
            }
            catch (OperationInterruptedException ex)
            {
                if (ex.Is404())
                {
                    Channel.RegisterQueueByName(queueName);

                    return(Channel.BasicGet(queueName, noAck: noAck));
                }
                throw;
            }
        }