RabbitMQ 交換機、佇列、訊息持久化
阿新 • • 發佈:2019-05-02
- 交換器持久化
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要關閉自動應答,需要