成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如果你公司里的MQ集群崩潰了,你能確保數據絕對不丟失嗎?

開發 前端
這篇文章,給不太熟悉MQ技術的同學,介紹一個生產環境中可能會遇到的問題。

上一篇講消息中間件的文章:??《如果公司線上系統突然宕機了,怎么才能確保MQ消息不丟失?》??,初步給大家介紹了一個在生產環境中可能遇到的問題,就是你的消費者服務可能會宕機,一旦宕機,你就需要考慮是否會導致沒處理完的消息丟失。

這篇文章,給不太熟悉MQ技術的同學,介紹一個生產環境中可能會遇到的問題。

目前為止,你的RabbitMQ部署在線上服務器了,對吧?然后訂單服務和倉儲服務都可以基于RabbitMQ來收發消息,同時倉儲服務宕機,不會導致消息丟失。

好,我們來看下目前為止的架構圖。

那如果此時出現一個問題,就是說訂單服務投遞了訂單消息到RabbitMQ里去,RabbitMQ暫時放在了自己的內存中,還沒來得及投遞給下游的倉儲服務呢,此時RabbitMQ突然宕機了,會怎么樣?

答案其實很簡單,默認情況下,按照我們目前的代碼和配置,這個數據就會丟失了。

所以在這里而言,就牽扯到了RabbitMQ的一個較為重要的概念:消息的持久化,用英文來說就是durable機制。

然后這里又有一個引申的概念,如果按照我們之前的代碼和配置,默認情況下,RabbitMQ一旦宕機就再次重啟,就會丟失我們之前創建的queue。所以首先得先讓queue是持久化的。

使用下面的代碼,就可以把我們的“
warehouse_schedule_delivery”這個queue,也就是倉儲調度發貨的queue,設置為持久化的。

這樣,即使RabbitMQ宕機后重啟,也會恢復之前創建好的這個queue。

channel.queueDeclare(
"warehouse_schedule_delivery",
true,
false,
false,
null);

大家看到上面那行定義和創建queue的代碼么?核心在于第二個參數,第二個參數是true。

他的意思就是說,這個創建的queue是durable的,也就是支持持久化的。

RabbitMQ會把這queue的相關信息持久化的存儲到磁盤上去,這樣RabbitMQ重啟后,就可以恢復持久化的queue。

OK,現在你的queue的信息可以持久化了,RabbitMQ宕機重啟后會自動恢復queue。但是,你的queue里的message數據呢? queue里都是訂單服務發送過去的訂單消息數據,如果RabbitMQ還沒來得及投遞queue里的訂單消息到倉儲服務,結果RabbitMQ就宕機了。

那此時RabbitMQ重啟之后,他可以恢復queue的信息,但是queue的message數據是沒法恢復了。 所以此時還有一個重要的點,就是在你的訂單服務發送消息到RabbitMQ的時候,需要定義這條消息也是durable,即持久化的。

channel.basicPublish(
"",
"warehouse_schedule_delivery",
MessageProperties.PERSISTENT_TEXT_PLAIN,
message.getBytes());

通過上面的方式來發送消息,就可以讓發送出去的消息是持久化的。

一旦標記了消息是持久化之后,就會讓RabbitMQ把消息持久化寫入到磁盤上去,此時如果RabbitMQ還沒投遞數據到倉儲服務,結果就突然宕機了。那么再次重啟的時候,就會把磁盤上持久化的消息給加載出來。

整個過程,如下圖所示:

但是這里要注意一點,RabbitMQ的消息持久化,是不承諾100%的消息不丟失的。

因為有可能RabbitMQ接收到了消息,但是還沒來得及持久化到磁盤,他自己就宕機了,這個時候消息還是會丟失的。

如果要完全100%保證寫入RabbitMQ的數據必須落地磁盤,不會丟失,需要依靠其他的機制。

責任編輯:姜華 來源: 今日頭條
相關推薦

2022-12-16 17:15:33

MQRabbitMQ

2019-08-16 08:50:52

代碼日志程序員

2024-02-23 14:53:10

Redis持久化

2022-02-07 12:10:01

消息

2021-01-07 07:54:45

HTML JavaScript CSS

2014-07-23 10:53:30

聽云應用監控

2017-11-13 20:37:49

Chrome技巧web

2023-03-20 07:32:26

配置代碼Spring

2023-03-26 08:15:04

代碼配置Spring

2019-02-25 14:14:00

系統緩存架構

2010-08-16 10:48:47

2015-03-30 10:56:14

大數據大數據價值

2019-08-08 17:25:20

裁員計劃程序員

2022-02-21 10:39:06

多云云托管云計算

2021-05-06 08:28:04

mq中間件消息中間件

2019-12-16 07:23:53

數據科學數據科學家數據

2017-12-25 05:40:35

信息安全社交網絡大數據

2022-04-12 07:51:31

架構TPSQPS

2022-12-26 18:53:00

MQ宕機倉儲服務

2014-04-16 15:10:10

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品综合久久 | 99综合网 | 久久精品二区亚洲w码 | 超碰精品在线观看 | 成人深夜福利 | 欧美一区二区在线观看视频 | 久久精品99久久 | 成人精品久久 | 97国产精品视频人人做人人爱 | 亚洲一区不卡 | 成人免费视频 | 黄色av网站在线观看 | 欧美精品乱码久久久久久按摩 | 99久久国产综合精品麻豆 | 日韩精品视频网 | 午夜精品久久久久久久星辰影院 | 在线观看的av | 久草欧美视频 | 麻豆国产一区二区三区四区 | 国产精品精品久久久 | 夜久久 | 日韩精品在线观看免费 | 国产色婷婷精品综合在线手机播放 | 精品乱码一区二区 | 欧美在线一区二区三区 | 久久黄色精品视频 | 伊人久久大香线 | 精品久久精品 | 五月天综合影院 | 久久人爽 | 成人午夜免费视频 | 国产伊人精品 | 国产美女一区 | 九九精品在线 | 亚洲国产精品区 | 国产精品99久久久精品免费观看 | 欧美成人手机在线 | 91精品国产综合久久久动漫日韩 | 嫩呦国产一区二区三区av | 欧美成人一级 | 国产精品久久久久久久免费大片 |