国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

RabbitMQ如何保證消息不丟失?

這篇具有很好參考價(jià)值的文章主要介紹了RabbitMQ如何保證消息不丟失?。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1、什么情況會(huì)導(dǎo)致消息丟失???????

? ? ? ? ?a.發(fā)送時(shí)丟失:

?? ????????????????生產(chǎn)者發(fā)送的消息未送達(dá)exchange

? ?????????????????消息到達(dá)exchange后未到達(dá)queue

? ? ? ? b.MQ宕機(jī),queue將消息丟失

? ? ? ? c.consumer接收到消息后未消費(fèi)就宕機(jī)

2、如何保證息不丟失,就是分別避免每一個(gè)環(huán)節(jié)丟失

? ? ? ? a.保證生產(chǎn)者不丟消息

? ? ? ? b.保證rabbitmq不丟消息

? ? ? ? c.保證消費(fèi)端不丟消息

3、RabbitMQ生產(chǎn)者如何避免消息丟失?

? ? ? ? a.保證生產(chǎn)者不丟消息,要確保說寫rabbitmq的消息別丟,可以開啟。

? ? ? ? b.每次寫的消息都會(huì)分配一個(gè)唯一的id,如果寫入了rabbitmq中,rabbitmq會(huì)給你回傳一個(gè)ack消息,告訴你說這個(gè)消息ok了。

? ? ? ? c.如果rabbitmq沒能處理這個(gè)消息,會(huì)回調(diào)你一個(gè)nack接口,告訴你這個(gè)消息接收失敗,我們可以重試。

? ? ? ? (publisher-confirm,發(fā)送者確認(rèn)消息成功投遞到交換機(jī),返回ack;消息未投遞到交換機(jī),返回nack。publisher-return,發(fā)送者回執(zhí),消息投遞到交換機(jī),但是沒有路由到隊(duì)列。返回ACK,及路由失敗原因。)

????????RabbitMQ如何保證消息不丟失?,rabbitmq,分布式,微服務(wù)

4、如何實(shí)現(xiàn)消息持久化?(注意:SpringAMQP默認(rèn)已經(jīng)進(jìn)行持久化

? ? ? ? a.保證rabbitmq不丟消息,開啟rabbitmq的持久化(持久化queue和message、exhange),設(shè)置不能自動(dòng)刪除

? ? ? ? b.交換機(jī)持久化? ?:? ?RabbitMQ如何保證消息不丟失?,rabbitmq,分布式,微服務(wù)

? ? ? ? c.持久化queue,在創(chuàng)建queue的時(shí)候?qū)⑵湓O(shè)置為持久化的,這樣就可以保證rabbitmq持久化queue的元數(shù)據(jù),但是不會(huì)持久化queue里的數(shù)據(jù)。

RabbitMQ如何保證消息不丟失?,rabbitmq,分布式,微服務(wù)

? ? ? ? d.持久化Message,在發(fā)送消息的時(shí)候?qū)⑾⒌膁eliveryMode設(shè)置為2,就是將消息設(shè)置為持久化的,此時(shí)rabbitmq就會(huì)將消息持久化到磁盤上去。

RabbitMQ如何保證消息不丟失?,rabbitmq,分布式,微服務(wù)

4、消費(fèi)者有幾種確認(rèn)機(jī)制?

????????RabbitMQ支持消費(fèi)者確認(rèn)機(jī)制:消費(fèi)者處理消息后可以向MQ發(fā)送ack回執(zhí),MQ收到ack回執(zhí)后才會(huì)刪除該消息。SpringAMQP允許配置三種確認(rèn)模式:

? ? ? ? ? ? ? ? none:關(guān)閉ack,MQ假定消費(fèi)者獲取消息后會(huì)成功處理,因此消息投遞后立即被刪除。

? ? ? ? ? ? ? ? manual:手動(dòng)ack,需要在業(yè)務(wù)代碼結(jié)束后,調(diào)用api發(fā)送ack。

? ? ? ? ? ? ? ? auto:自動(dòng)ack,由spring監(jiān)測(cè)listener代碼是否出現(xiàn)異常,沒有異常返回ack;有異常返回nack(默認(rèn))。(注意:auto默認(rèn)方式,消費(fèi)者消息處理異常后消息會(huì)重新入隊(duì),如果消費(fèi)者一直異常則會(huì)一直死循環(huán)。

????????方式是修改application.yml文件,添加下面配置:? ? ? ? ? ? ??RabbitMQ如何保證消息不丟失?,rabbitmq,分布式,微服務(wù)

5、消費(fèi)者消費(fèi)失敗后如何解決死循環(huán)導(dǎo)致MQ壓力大?(注意:重試次數(shù)達(dá)到后,消息被丟棄。)

????????當(dāng)消費(fèi)者出現(xiàn)異常后,消息會(huì)不斷requeue(重新入隊(duì))到隊(duì)列,再重新發(fā)送給消費(fèi)者,然后再次異常,再次requeue,無限循環(huán),導(dǎo)致mq的消息處理飆升,帶來不必要的壓力:

RabbitMQ如何保證消息不丟失?,rabbitmq,分布式,微服務(wù)

????????我們可以利用Springretry機(jī)制,在消費(fèi)者出現(xiàn)異常時(shí)利用本地重試,而不是無限制的requeuemq隊(duì)列。

RabbitMQ如何保證消息不丟失?,rabbitmq,分布式,微服務(wù)

????????開啟Spring本地重試模式后,重試次數(shù)耗盡,如果消息依然失敗,則需要有MessageRecoverer接口來處理,它包含三種不同的實(shí)現(xiàn):

? ? ? ? a.RejectAndDontRequeueRecoverer:重試耗盡后,直接reject,丟棄消息。默認(rèn)就是這種方式。

? ? ? ? b.ImmediateRequeueMessageRecoverer:重試耗盡后,返回nack,消息重新入隊(duì)。

? ? ? ? c.RepublishMessageRecoverer:重試耗盡后,將失敗消息投遞到指定的交換機(jī)(推薦使用)。? ? ? ?RabbitMQ如何保證消息不丟失?,rabbitmq,分布式,微服務(wù)

????????測(cè)試下RepublishMessageRecoverer處理模式:

????????創(chuàng)建配置類ErrorMessageConfig,定義接收失敗消息的交換機(jī)、隊(duì)列及其綁定關(guān)系:????????RabbitMQ如何保證消息不丟失?,rabbitmq,分布式,微服務(wù)????????然后,定義RepublishMessageRecoverer:????????RabbitMQ如何保證消息不丟失?,rabbitmq,分布式,微服務(wù)

6、如何確保RabbitMQ消息的可靠性(面試)?????????

????????1.開啟生產(chǎn)者確認(rèn)機(jī)制,確保生產(chǎn)者的消息能到達(dá)隊(duì)列

????????2.開啟持久化功能,確保消息未消費(fèi)前在隊(duì)列中不會(huì)丟失

????????3.開啟消費(fèi)者確認(rèn)機(jī)制為auto,由spring確認(rèn)消息處理成功后完成ack

????????4.開啟消費(fèi)者失敗重試機(jī)制,配置重試次數(shù)、重試時(shí)間

????????5.改變默認(rèn)失敗重試策略,多次重試失敗后將消息投遞到異常交換機(jī),交由人工處理文章來源地址http://www.zghlxwxcb.cn/news/detail-784769.html

到了這里,關(guān)于RabbitMQ如何保證消息不丟失?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • RabbitMQ 保證消息不丟失的幾種手段

    RabbitMQ 保證消息不丟失的幾種手段

    在使用消息隊(duì)列時(shí),面對(duì)復(fù)雜的網(wǎng)絡(luò)狀況,我們必須要考慮如何確保消息能夠正常消費(fèi)。在分析如何保證消息不丟失的問題之前,我們需要對(duì)癥下藥,什么樣的情況會(huì)導(dǎo)致消息丟失。 在弄清消息丟失的情況之前,我們先看看一條消息從產(chǎn)生到最終消費(fèi)會(huì)經(jīng)歷哪些過程。 上面

    2024年02月08日
    瀏覽(24)
  • 消息中間件之八股面試回答篇:一、問題概覽+MQ的應(yīng)用場(chǎng)景+RabbitMQ如何保證消息不丟失(生產(chǎn)者確認(rèn)機(jī)制、持久化、消費(fèi)者確認(rèn)機(jī)制)+回答模板

    消息中間件之八股面試回答篇:一、問題概覽+MQ的應(yīng)用場(chǎng)景+RabbitMQ如何保證消息不丟失(生產(chǎn)者確認(rèn)機(jī)制、持久化、消費(fèi)者確認(rèn)機(jī)制)+回答模板

    目前主流的消息隊(duì)列技術(shù)(MQ技術(shù))分為RabbitMQ和Kafka,其中深藍(lán)色為只要是MQ,一般都會(huì)問到的問題。淺藍(lán)色是針對(duì)RabbitMQ的特性的問題。藍(lán)紫色為針對(duì)Kafka的特性的問題。 MQ主要提供的功能為:異步 解耦 削峰 。 展開來講就是 異步發(fā)送(驗(yàn)證碼、短信、郵件…) MYSQL和Redi

    2024年01月24日
    瀏覽(56)
  • rabbitMQ如何保證數(shù)據(jù)不丟失

    Q: 當(dāng)訂單服務(wù)發(fā)送一條消息到rabbitMQ, rabbitMQ成功接收到了消息并保存在內(nèi)存中, 但是在倉儲(chǔ)服務(wù)沒有拿走此消息之前, rabbitMQ宕機(jī)了. 怎么辦? A:此問題需要考慮消息持久化(durable機(jī)制), 通過設(shè)置隊(duì)列的durable參數(shù)為true, 則當(dāng)rabbitMQ重啟之后, 會(huì)恢復(fù)之前的隊(duì)列. 它的工作原理是rab

    2024年02月15日
    瀏覽(20)
  • RabbitMQ消息丟失、消息重復(fù)消費(fèi)、消息順序性無法保證、消息積壓、一致性問題、系統(tǒng)可用性降低等這些常見問題怎么解決

    該文章專注于面試,面試只要回答關(guān)鍵點(diǎn)即可,不需要對(duì)框架有非常深入的回答,如果你想應(yīng)付面試,是足夠了,抓住關(guān)鍵點(diǎn) 1. 消息丟失 問題 :在生產(chǎn)者發(fā)送消息到MQ、MQ內(nèi)部處理、消費(fèi)者接收消息的任一環(huán)節(jié)都可能導(dǎo)致消息丟失。 解決方案 : 生產(chǎn)者確認(rèn)機(jī)制 :確保消息

    2024年04月25日
    瀏覽(28)
  • 分布式消息隊(duì)列:Rabbitmq(2)

    分布式消息隊(duì)列:Rabbitmq(2)

    目錄 一:交換機(jī) 1:Direct交換機(jī) 1.1生產(chǎn)者端代碼: ?1.2:消費(fèi)者端代碼: 2:Topic主題交換機(jī)? 2.1:生產(chǎn)者代碼:? 2.2:消費(fèi)者代碼: ?二:核心特性 2.1:消息過期機(jī)制 2.1.1:給隊(duì)列中的全部消息指定過期時(shí)間 2.1.2:給某條消息指定過期時(shí)間? 2.2:死信隊(duì)列 綁定: 讓交換機(jī)和隊(duì)列進(jìn)行關(guān)聯(lián),可以指

    2024年02月08日
    瀏覽(24)
  • 分布式消息隊(duì)列:RabbitMQ(1)

    分布式消息隊(duì)列:RabbitMQ(1)

    目錄 一:中間件 二:分布式消息隊(duì)列? 2.1:是消息隊(duì)列 2.1.1:消息隊(duì)列的優(yōu)勢(shì) 2.1.1.1:異步處理化 2.1.1.2:削峰填谷 2.2:分布式消息隊(duì)列 2.2.1:分布式消息隊(duì)列的優(yōu)勢(shì) 2.2.1.1:數(shù)據(jù)的持久化 2.2.1.2:可擴(kuò)展性 2.2.1.3:應(yīng)用解耦 2.2.1.4:發(fā)送訂閱? 2.2.2:分布式消息隊(duì)列的應(yīng)用場(chǎng)景? 三:Rabbitmq 3.1:基

    2024年02月08日
    瀏覽(25)
  • 【103期】RabbitMQ 實(shí)現(xiàn)多系統(tǒng)間的分布式事務(wù),保證數(shù)據(jù)一致性

    【103期】RabbitMQ 實(shí)現(xiàn)多系統(tǒng)間的分布式事務(wù),保證數(shù)據(jù)一致性

    org.springframework.boot spring-boot-starter-amqp mysql mysql-connector-java runtime org.projectlombok lombok true org.springframework.boot spring-boot-starter-jdbc com.alibaba fastjson 1.2.17 3.2.1.2配置文件內(nèi)容: server: port:?8080 spring: datasource: driver-class-name:?com.mysql.cj.jdbc.Driver url:?jdbc:mysql://localhost:3306/test?useUnicode=tru

    2024年04月14日
    瀏覽(32)
  • 【RabbitMQ】RabbitMQ如何確認(rèn)消息被消費(fèi)、以及保證消息的冪等

    【RabbitMQ】RabbitMQ如何確認(rèn)消息被消費(fèi)、以及保證消息的冪等

    目錄 一、如何保證消息被消費(fèi) 二、如何保證消息冪等性 RabbitMQ提供了消息補(bǔ)償機(jī)制來保證消息被消費(fèi),當(dāng)一條消費(fèi)被發(fā)送后,到達(dá)隊(duì)列后發(fā)給消費(fèi)者。消費(fèi)者消費(fèi)成功后會(huì)給MQ服務(wù)器的隊(duì)列發(fā)送一個(gè)確認(rèn)消息,此時(shí)會(huì)有一個(gè)回調(diào)檢測(cè)服務(wù)監(jiān)聽該接收確認(rèn)消息的隊(duì)列,然將消費(fèi)

    2024年02月16日
    瀏覽(24)
  • RabbitMQ如何保證消息可靠性

    RabbitMQ如何保證消息可靠性

    目錄 1、RabbitMQ消息丟失的可能性 1.1 生產(chǎn)者消息丟失場(chǎng)景 1.2 MQ導(dǎo)致消息丟失 1.3 消費(fèi)者丟失 2、如何保證生產(chǎn)者消息的可靠性 2.1 生產(chǎn)者重試機(jī)制 2.2 生產(chǎn)者確認(rèn)機(jī)制 2.3 實(shí)現(xiàn)生產(chǎn)者確認(rèn) 2.3.1 配置yml開啟生產(chǎn)者確認(rèn) 2.3.2 定義ReturnCallback 2.3.3 定義ConfirmCallback 3、MQ消息可靠性 3.1

    2024年02月20日
    瀏覽(25)
  • 如何保證RabbitMQ消息的順序性

    針對(duì)以上問題,一個(gè)解決思路是:保證消息的唯一性,就算是多次傳輸,不要讓消息的多次消費(fèi)帶來影響;保證消息等冪性;比如:在寫入消息隊(duì)列的數(shù)據(jù)做唯一標(biāo)示,消費(fèi)消 息時(shí),根據(jù)唯一標(biāo)識(shí)判斷是否消費(fèi)過;假設(shè)你有個(gè)系統(tǒng),消費(fèi)一條消息就往數(shù)據(jù)庫里插入一條數(shù)據(jù),

    2024年02月07日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包