一:訊息應答
1.介紹
涉及到的程式:
boolean autoAck=false;
channel.basicConsume(QUENE_NAME,autoAck,consumer);
2.autoAck=true
自動確認模式。
一旦rabbitMq將訊息傳送給消費者,就從記憶體中刪除。
缺點:如果這個時候消費者掛掉,就會丟失正在處理的訊息。
3.autoAck=false
手動模式。
如果一個消費者掛掉,就會交給其他的消費者。
rabbitMq支援訊息應答,消費者傳送一個訊息應答,告訴rabbitMq這個訊息已經處理結束,然後這時rabbitMq就會刪除記憶體中的訊息。
4.預設
預設是開啟的,為false。
二:持久化
1.出現的緣由
如果rabbitMq掛了,訊息就會丟失。
rabbitMq支援持久化。
2.涉及的程式
//建立佇列宣告
channel.queueDeclare(QUENE_NAME,false,false,false,null);
其中,第二個引數是durable,是否持久化。
3.注意點
將第二個引數改成true,直接執行程式是會報錯的。
原因如下:
因為剛才在執行程式的時候已經定義了一個佇列,然後又定義了一個相同的佇列,並且引數不同。這個是不被rabbitMq所允許的。
做法:
換一個佇列的名字,或者去管理平臺上刪除已經存在的佇列。