3
私はRabbit MQを使ってメッセージングのためのアプリケーションを開発しています。再キューした後の配信の順序を保つ
model.BasicConsume(queueName,false, consumer);
とメッセージを処理した後、ACKを実行します:私は、明示的な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.私は1人の消費者とRabbitMQ 3.6.6しか持っていませんが、まだ並べ替えの問題があります。