成人免费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

消息

2017-11-13 20:37:49

Chrome技巧web

2021-01-07 07:54:45

HTML JavaScript CSS

2023-03-20 07:32:26

配置代碼Spring

2023-03-26 08:15:04

代碼配置Spring

2014-07-23 10:53:30

聽云應用監控

2019-02-25 14:14:00

系統緩存架構

2010-08-16 10:48:47

2015-03-30 10:56:14

大數據大數據價值

2019-08-08 17:25:20

裁員計劃程序員

2019-12-16 07:23:53

數據科學數據科學家數據

2017-12-25 05:40:35

信息安全社交網絡大數據

2022-02-21 10:39:06

多云云托管云計算

2021-05-06 08:28:04

mq中間件消息中間件

2022-12-26 18:53:00

MQ宕機倉儲服務

2014-04-16 15:10:10

2022-04-12 07:51:31

架構TPSQPS
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 色婷婷综合久久久中字幕精品久久 | 国产一区二区毛片 | 久久亚洲一区二区三区四区 | 国产精品s色 | 99精品网| 欧美理论在线观看 | 一区二区三区高清不卡 | 国产一区二区精品在线 | 国产精品永久免费观看 | 91视频在线 | 欧美日韩手机在线观看 | 久久精品91久久久久久再现 | 韩国成人在线视频 | 午夜成人在线视频 | 日日夜精品视频 | 成人av一区 | 成人1区2区 | 18av在线播放 | 日本二区 | 国产精品久久久久久久久免费相片 | 国产精品免费一区二区三区四区 | 久久大香 | 亚洲av毛片 | 成人一区二区在线 | 色综合久 | 久久久久久国产精品免费 | 九九天堂网 | 日韩久久久久久 | 国产精品成人国产乱一区 | www.国产| 嫩草懂你的影院入口 | 精品一区二区三区91 | 久久国产精品99久久久大便 | 亚洲日本一区二区 | 欧美日韩在线精品 | 亚洲欧美在线观看 | 看av电影 | 99九色| 久久电影一区 | av在线视| aaa级片 |