教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

如何確保MQ消息的可靠性?

更新時(shí)間:2023年09月26日18時(shí)19分 來(lái)源:傳智教育 瀏覽次數(shù):

為了提升性能,默認(rèn)情況下MQ的數(shù)據(jù)都是在內(nèi)存存儲(chǔ)的臨時(shí)數(shù)據(jù),重啟后就會(huì)消失。為了保證數(shù)據(jù)的可靠性,必須配置數(shù)據(jù)持久化,包括:

交換機(jī)持久化

隊(duì)列持久化

消息持久化

我們以控制臺(tái)界面為例來(lái)說(shuō)明。

1.交換機(jī)持久化

在控制臺(tái)的Exchanges頁(yè)面,添加交換機(jī)時(shí)可以配置交換機(jī)的Durability參數(shù):

交換機(jī)持久化
設(shè)置為Durable就是持久化模式,Transient就是臨時(shí)模式。

2.隊(duì)列持久化

在控制臺(tái)的Queues頁(yè)面,添加隊(duì)列時(shí),同樣可以配置隊(duì)列的Durability參數(shù):

對(duì)列持久化
除了持久化以外,你可以看到隊(duì)列還有很多其它參數(shù)。

3.消息持久化

在控制臺(tái)發(fā)送消息的時(shí)候,可以添加很多參數(shù),而消息的持久化是要配置一個(gè)properties:

消息持久化

warning 說(shuō)明:在開啟持久化機(jī)制以后,如果同時(shí)還開啟了生產(chǎn)者確認(rèn),那么MQ會(huì)在消息持久化以后才發(fā)送ACK回執(zhí),進(jìn)一步確保消息的可靠性。 不過(guò)出于性能考慮,為了減少IO次數(shù),發(fā)送到MQ的消息并不是逐條持久化到數(shù)據(jù)庫(kù)的,而是每隔一段時(shí)間批量持久化。一般間隔在100毫秒左右,這就會(huì)導(dǎo)致ACK有一定的延遲,因此建議生產(chǎn)者確認(rèn)全部采用異步方式。

0 分享到:
和我們?cè)诰€交談!