[rabbitmq-discuss] RabbitMQ - Not able to get sets of messages in the same order

Srijanani Srinivasan srijanani.s at gmail.com
Thu Jun 10 15:24:21 BST 2010


Hi,

I am using Rabbit MQ in C#. This is my scenario

1.               A separate process publishes messages to the queue

2.               Client has to read set of N messages from queue

3.               Process the N messages

4.               Acknowledge the N messages

5.               Repeat steps 2 to 4 continuously to process all sets of
messages

Under the same channel, I receive the messages and then process them and
then acknowledge them. The server process keeps publishing messages. The
problem I am facing is, when I try to get next set of messages, they do not
come in the same order as it was published by the publishing process. The
messages come in a random order. Only the first set of messages comes in the
correct order.

Does any one what is going wrong here? Is creating a new channel to access
the next set of messages not right? Or is there a problem caused because of
acknowledging multiple messages? Please help me understand why this does not
work correctly.

Below is the sample code:

while (true)

            {

                using (IModel getChannel = MQConnection.CreateModel())

                {

                    // Create a consumer

                    QueueingBasicConsumer consumer =
CreateQueueConsumer(getChannel, exchangeName, queueName);

                    int numberOfMessages = 100;

                    // Next Recieve

                    List<object> msgSet = GetNextSetOfMessages(consumer,
getChannel, exchangeName, queueName, numberOfMessages,
outfinalDeliverytag);

                    // Do some processing

                    //Acknowledge finished messages by passing in the
delivery tag.

                    // calls the method BasicAck with multiple param=true

                    if (finalDeliverytag > 0)

                        AckFinishedMessages(exchangeName, queueName,
finalDeliverytag, getChannel);

                    if (finalDeliverytag == 0)

                        break;

                }

            }



Thanks for your help in advance!

Srijanani
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20100610/6b4299b2/attachment-0001.htm>


More information about the rabbitmq-discuss mailing list