[rabbitmq-discuss] Acknowledging messages using the EventingBasicConsumer

Toby Riley toby.riley at rekoop.com
Thu Aug 2 12:05:30 BST 2012


Hi,

I have a question I could not find a proper answer to anywhere, and it is to do with the Acknowledging messages using the  EventingBasicConsumer, I’m using   _channel.BasicAck(e.DeliveryTag, false); but there is one for o.Model. BasicAck(e.DeliveryTag, false) but the sender object (o) is null.
 
What is the proper way to Acknowledge message from the Received event when using the EventingBasicConsumer when you inside the delegate?
 
Thanks in advance
 
Toby
 
public void Subscribe(string queueName)
{

    var consumer = new EventingBasicConsumer();
    
    consumer.Received += (o, e) =>
        {

            string data = Encoding.ASCII.GetString(e.Body);
            Console.WriteLine(data);

            byte[] body = e.Body;

            body = Encoding.Convert(Encoding.GetEncoding("iso-8859-1"), Encoding.UTF8, body);
            var tempString = Encoding.UTF8.GetString(body, 0, body.Count());

            // raise my event here
            //
            OnMessageDataReceived(new MessageDataEventArgs { MessageCallData = tempString, CallData = CallDataRecord.FromXml(tempString) });

            // ack message to remove from queue. (TODO : NOT SURE IF CORRECT BUT WORKS as the _channel is created by the consumer)
            //
            _channel.BasicAck(e.DeliveryTag, false);
            
            // this does not work becuase o is null - what's the correct way of acking the message inside the delegate?
            // o.Model.BasicAck(e.DeliveryTag, false); 
        };

    var consumerTag = _channel.BasicConsume(queueName, false, consumer);

}



More information about the rabbitmq-discuss mailing list