Example #1
0
 public object BasicConsume(out RQChannel rabbitMqChannel, out long messageCount, bool ack, out string messageId)
 {
     messageId = string.Empty;
     object messageItem = null;
     messageCount = 0;
     Connection = RQConnection.GetConnection();
     rabbitMqChannel = new RQChannel(Connection);
     BasicGetResult eventArgs;
     eventArgs = rabbitMqChannel.Channel.BasicGet(QueueName, !ack);
     if (eventArgs != null)
     {
         byte[] message = eventArgs.Body;
         var binaryFormatter = new BinaryFormatter();
         var memoryStream = new MemoryStream();
         memoryStream.Write(message, 0, message.Length);
         memoryStream.Seek(0, SeekOrigin.Begin);
         messageItem = binaryFormatter.Deserialize(memoryStream);
         messageId = eventArgs.DeliveryTag.ToString(CultureInfo.InvariantCulture);       //Id must not be changed or lost in any case
         messageCount = eventArgs.MessageCount;
     }
     if (eventArgs == null || !ack)
     {
         rabbitMqChannel.Dispose();
         rabbitMqChannel = null;
     }
     return messageItem;
 }
Example #2
0
        public MessageItem Consume(out RQChannel rabbitMqChannel, out long messageCount, bool ack)
        {
            MessageItem messageItem = null;
            messageCount = 0;
            Connection = RQConnection.GetConnection();
            rabbitMqChannel = new RQChannel(Connection);
            // QueueingBasicConsumer Consumer = new QueueingBasicConsumer(rabbitMqChannel.Channel);
            //rabbitMqChannel.Channel.BasicConsume(QueueName, false, Consumer);
            //BasicDeliverEventArgs eventArgs;
            //Consumer.Queue.Dequeue(5000, out eventArgs);        //Timeout is essential
            BasicGetResult eventArgs;

            eventArgs = rabbitMqChannel.Channel.BasicGet(QueueName, !ack);
            //Channel.BasicGet(string queue,bool noAck)
            if (eventArgs != null)
            {
                String jsonified = Encoding.UTF8.GetString(eventArgs.Body);
                var settings = new JsonSerializerSettings()
                {
                    TypeNameHandling = TypeNameHandling.Objects,
                };
                messageItem = JsonConvert.DeserializeObject<MessageItem>(jsonified, settings);
                messageItem.MessageId = eventArgs.DeliveryTag.ToString(CultureInfo.InvariantCulture);       //Id must not be changed or lost in any case
                messageCount = eventArgs.MessageCount;
            }
            if (eventArgs == null || !ack)
            {
                rabbitMqChannel.Dispose();
                rabbitMqChannel = null;
            }

            return messageItem;
        }
Example #3
0
 public bool RequeueMessageItem(RQChannel rabbitMqChannel, string messageIdentifier)
 {
     rabbitMqChannel.Channel.BasicReject(Convert.ToUInt32(messageIdentifier), true);
     rabbitMqChannel.Dispose();
     return true;
 }
Example #4
0
 public bool DeleteMessageItem(RQChannel rabbitMqChannel, string messageIdentifier)
 {
     rabbitMqChannel.Channel.BasicAck(Convert.ToUInt32(messageIdentifier), false);
     rabbitMqChannel.Dispose();
     return true;
 }