Я разрабатываю приложение для обмена сообщениями с помощью Rabbit MQ. Я использую явный ACK:сохранить порядок доставки после запроса
model.BasicConsume(queueName,false, consumer);
и сделать ACK после обработки сообщения:
consumer.Received += (ch, ea) =>
{
try
{
var message = Encoding.UTF8.GetString(ea.Body);
Logger.Info($"DeliveryTag={ea.DeliveryTag}, message={message}");
((EventingBasicConsumer)ch).Model.BasicAck(ea.DeliveryTag, false);
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
};
Проблема заключается в том, когда есть ошибка обработки сообщения и Кролик не получает ACK, он возвращает сообщение к очереди вдругой заказ.
Например, есть сообщения M1, M2, M3, M4.
Если M2 был возвращен в очередь, это будет M3, M4, M2.
Есть ли способ до сохранить заказ доставки?
P.S. У меня есть только один потребитель и RabbitMQ 3.6.6, но у меня все еще есть проблема переупорядочения.
Да, и, как я писал: «У меня есть только один потребитель и RabbitMQ 3.6.6, но у меня все еще есть проблема переупорядочения» –