1. 程式人生 > >RabbitMQ-訊息應答和訊息持久化

RabbitMQ-訊息應答和訊息持久化

1.訊息應答

Ack (Message Acknowledgement)
訊息應答預設開啟 false

autoAck = true
(自動確認模式) 一旦rabbitMQ將訊息分發給消費者,就會從記憶體中刪除
這種情況下,如果消費者未處理完訊息就異常結束,則會丟失正在處理的訊息

autoAck = false
將 autoAck 設定為 false(手動確認模式) 如果一個消費者掛掉,就會交付給其他消費者
rabbitMQ支援訊息應答,消費者傳送一個訊息應答告訴rabbitMQ當前訊息已經處理完成,rabbitMQ得到訊息後
再去刪除記憶體中的訊息,這種情況下如果rabbitMQ掛了,訊息仍會丟失,rabbitMQ支援持久化操作,將佇列持久化操作可解決問題

2.訊息持久化

//宣告佇列
//持久化引數 durable改為true即可支援持久化
boolean durable = false;
channel.queueDeclare(QUEUE_NAME,durable,false,false,null);

ps:如果佇列已經宣告成功,則改變durable的值重新宣告佇列是不允許的,會丟擲異常
rabbitMQ不允許重新定義同一個已經存在但是引數不同的佇列