Я использую Rabbit MQ в C #.Это мой сценарий
- Отдельный процесс публикует сообщения в очередь
- Клиент должен прочитать набор из N сообщений из очереди
- Обработать N сообщений
- Подтверждение 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;
}
}
Пожалуйста, помогите.Спасибо!