2017-02-15 10 views
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しか持っていませんが、まだ並べ替えの問題があります。

答えて

関連する問題