1. 程式人生 > >RabbitMQ 交換機、佇列、訊息持久化

RabbitMQ 交換機、佇列、訊息持久化

  • 交換器持久化
    Durable:是否持久化引數設為True即可 channel.exchangeDeclare(exchangeName, type, true);
  • 佇列持久化 channel.queueDeclare("A",true,false,false,null).getQueue();
  • 訊息持久化
    • 在之前,訊息分發給consumer後立即就會被標記為已消費,這時候如果consumber接到了一個訊息但是還沒有來的及處理就異常退出,那麼這個訊息的狀態是已被消費的,於是就會造成訊息丟失的問題。

        channel.basic_publish('',
                    'hello',
                    'hello',
                    properties=pika.BasicProperties(
                        delivery_mode=2,  # make message persistent
                    ))
      
        #增加properties,這個properties 就是消費端 callback函式中的properties
        #delivery_mode = 2  持久化訊息
      

個人總結:
一般持久化需要交換器、佇列、訊息都要開啟,當然也是預設開啟的。 consumer要關閉自動應答,需要