91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何保證RabbitMQ重啟后消息不丟失

發布時間:2022-09-27 16:34:47 來源:億速云 閱讀:269 作者:iii 欄目:開發技術

這篇文章主要介紹了如何保證RabbitMQ重啟后消息不丟失的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇如何保證RabbitMQ重啟后消息不丟失文章都會有所收獲,下面我們一起來看看吧。

1.設計思路

如何保證RabbitMQ重啟后消息不丟失

2.方案說明

(1)生產者提交給消息服務器時,使用確認機制

channel.confirmSelect();
…………if (channel.waitForConfirms()) {
    System.out.println("發送消息成功");
} else {
    System.out.println("發送消息失敗");
}

生產者收不到確認的情況:

1)MQ掛了

2)MQ滿了,

解決辦法:每次的生產者消息發送都通過日志表記錄下來,后續采用手動補償即可

(2)消息服務器對應的隊列、交換機等都持久化,保證數據的不丟失

1)代碼設置

2)控制平臺設置---默認都是持久化的。臨時的話重啟后就會消失

durable是否持久化 durable為持久化、 Transient 不持久化

autoDelete 是否自動刪除,當最后一個消費者斷開連接之后隊列是否自動被刪除,可以通過RabbitMQ Management,查看某個隊列的消費者數量,當consumers = 0時隊列就會自動刪除

如何保證RabbitMQ重啟后消息不丟失

如果已經設置了持久化,則給生產者確認的時候就是持久化成功后的確認。這樣就算硬盤壞了、持久化的過程斷電了,都不會影響到消息的丟失,因為生產者收不到確認證明沒發送成功。

(3)消費者采用消息確認機制,保證數據的不丟失

1)消息隊列到消費者的方式有首次主動拉取、后續生產者發送時的主動推送和消費者發生異常時的重試三種方式。

2)消息應答的方式默認為自動,即消費者收到消息時,隊列即刪除。如果消費者出現了斷電等情況,也會被直接刪除。所以要改成手動確認刪除后,隊列才會真正刪除,這樣保證了消息的不丟失。

channel.basicConsume(QUEUE_NAME, false, defaultConsumer);
注:第二個參數值為false代表關閉RabbitMQ的自動應答機制,改為手動應答。
在處理完消息時,返回應答狀態,true表示為自動應答模式。
channel.basicAck(envelope.getDeliveryTag(), false);

3.Rabbitmq如何開啟持久化的功能

(1)默認的情況下mq服務器端創建隊列和交換機都是持久化的

(2)如果是代碼創建的話,將該值設置為durablet

關于“如何保證RabbitMQ重啟后消息不丟失”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“如何保證RabbitMQ重啟后消息不丟失”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

明光市| 沛县| 藁城市| 汉川市| 博白县| 宜丰县| 于都县| 简阳市| 项城市| 鹤庆县| 温泉县| 崇明县| 伊金霍洛旗| 胶南市| 晋城| 彭州市| 安图县| 中宁县| 浦北县| 鹤峰县| 许昌市| 普格县| 尚义县| 张家口市| 横峰县| 莱西市| 上饶县| 呼玛县| 鹤岗市| 曲沃县| 北辰区| 都江堰市| 竹山县| 南陵县| 兴隆县| 迭部县| 黔江区| 上高县| 彰武县| 高州市| 芜湖市|