2

我在 C# 中使用 Rabbit MQ。这是我的场景

  1. 一个单独的进程将消息发布到队列
  2. 客户端必须从队列中读取 N 组消息
  3. 处理 N 条消息
  4. 确认 N 条消息

在同一个频道下,我接收消息,然后处理它们,然后确认它们。服务器进程不断发布消息。我面临的问题是,当我尝试获取下一组消息时,它们的顺序与发布过程发布的顺序不同。消息以随机顺序出现。只有第一组消息以正确的顺序出现。

有人在这里出了什么问题吗?创建一个新频道来访问下一组消息是不对的吗?下面是示例代码:

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, out finalDeliverytag);


                 // Do some processing

                 if (finalDeliverytag > 0)
                     AckFinishedMessages(exchangeName, queueName, finalDeliverytag, getChannel);

                 if (finalDeliverytag == 0)
                     break;

             }
         }

请帮忙。谢谢!

4

0 回答 0