大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 保證RabbitMQ重啟后消息不丟失的方法

保證RabbitMQ重啟后消息不丟失的方法

更新時間:2021-09-15 11:33:36 來源:動力節點 瀏覽2310次

1.設計思路

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時隊列就會自動刪除

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

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

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

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

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

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

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

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

以上就是關于“保證RabbitMQ重啟后消息不丟失的方法”的介紹,大家如果想學習更多關于Java的技術,可以關注動力節點Java在線學習,里面有更多的技術文檔供大家學習,希望對大家能夠有所幫助哦。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 最新国产三级久久 | 国产欧美日韩精品a在线观看 | 日韩精品123 | 国产香蕉一区二区精品视频 | 日韩亚洲人成在线综合 | 久久综合九色综合亚洲小说 | 免费看一级欧美毛片 | 国产一级特黄高清在线大片 | 日本草草影院 | 久久精品久久精品 | a男人天堂 | 国产精品久久久久无毒 | 国产成人亚洲欧美三区综合 | 亚洲国产欧美国产第一区二区三区 | 亚洲国产精品毛片∧v卡在线 | 久久综合九色综合欧美狠狠 | 色八戒国产一区二区三区四区 | 中文字幕一区二区三区亚洲精品 | 亚洲国内精品久久 | 国产一区不卡 | 99欧美精品 | 婷婷综合另类小说色区 | 黄色在线观看www | videos欧美黑白爆交 | 亚洲精品国产成人7777 | 欧美性一区二区三区五区 | 韩国亚洲伊人久久综合影院 | 九九九久久久久久久爱 | 色最快国产 | 色综合久久天天综线观看 | 一级毛片特级毛片免费的 | 日韩精品一区二区三区免费观看 | 99999久久久久久亚洲 | 日韩中文字幕在线播放 | 免费观看四虎精品国产永久 | 国产蜜汁tv福利在线 | 欧美一级色 | 国产午夜精品一区二区三区嫩草 | 免费看一级欧美毛片视频 | 欧美一级毛片高清毛片 | 最新99国产成人精品视频免费 |