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

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

這篇具有很好參考價值的文章主要介紹了消息中間件之八股面試回答篇:一、問題概覽+MQ的應(yīng)用場景+RabbitMQ如何保證消息不丟失(生產(chǎn)者確認機制、持久化、消費者確認機制)+回答模板。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

問題概覽

消息中間件之八股面試回答篇:一、問題概覽+MQ的應(yīng)用場景+RabbitMQ如何保證消息不丟失(生產(chǎn)者確認機制、持久化、消費者確認機制)+回答模板,RabbitMQ,消息隊列面試,面試,rabbitmq,職場和發(fā)展,spring cloud,java,后端,分布式
目前主流的消息隊列技術(shù)(MQ技術(shù))分為RabbitMQ和Kafka,其中深藍色為只要是MQ,一般都會問到的問題。淺藍色是針對RabbitMQ的特性的問題。藍紫色為針對Kafka的特性的問題。

MQ的應(yīng)用場景

MQ主要提供的功能為:異步 解耦 削峰 。
展開來講就是

  • 異步發(fā)送(驗證碼、短信、郵件…)
  • MYSQL和Redis/ES之間的數(shù)據(jù)同步
  • 分布式事務(wù)
  • 削峰填谷

RabbitMQ如何保證消息不丟失

RabbitMQ的工作流程應(yīng)該如下,其中每個環(huán)節(jié)都可能導(dǎo)致消息丟失。
消息中間件之八股面試回答篇:一、問題概覽+MQ的應(yīng)用場景+RabbitMQ如何保證消息不丟失(生產(chǎn)者確認機制、持久化、消費者確認機制)+回答模板,RabbitMQ,消息隊列面試,面試,rabbitmq,職場和發(fā)展,spring cloud,java,后端,分布式
publisher叫做發(fā)布者,也可叫做生產(chǎn)者。consumer叫做消費者。

生產(chǎn)者確認機制(解決消息未到達交換機或隊列的問題)

生產(chǎn)者確認機制是用來確認生產(chǎn)者將消息發(fā)送給交換器,交換器傳遞給隊列的過程中,消息是否成功投遞的。發(fā)送確認分為兩步,一是確認是否到達交換器,二是確認是否到達隊列。
消息中間件之八股面試回答篇:一、問題概覽+MQ的應(yīng)用場景+RabbitMQ如何保證消息不丟失(生產(chǎn)者確認機制、持久化、消費者確認機制)+回答模板,RabbitMQ,消息隊列面試,面試,rabbitmq,職場和發(fā)展,spring cloud,java,后端,分布式
如果沒有成功到達交換器,那么就會返回一個nack publish-confirm
如果沒有成功到達隊列,那么就會返回一個ack publish-return

那確認消息發(fā)送失敗之后如何處理捏?
一般有以下三種做法:

  • 回調(diào)方法即時重發(fā)
  • 記錄日志
  • 保存到數(shù)據(jù)庫然后定時重發(fā),成功發(fā)送后即刻刪除表中的數(shù)據(jù)

持久化技術(shù)(解決消息在隊列中丟失的問題)

MQ默認是內(nèi)存存儲消息,需要持久化。分為交換機持久化、隊列持久化和消息持久化,都通過代碼來完成。
消息中間件之八股面試回答篇:一、問題概覽+MQ的應(yīng)用場景+RabbitMQ如何保證消息不丟失(生產(chǎn)者確認機制、持久化、消費者確認機制)+回答模板,RabbitMQ,消息隊列面試,面試,rabbitmq,職場和發(fā)展,spring cloud,java,后端,分布式

消費者確認機制(解決消息未到達消費者的問題)

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

  1. manual:手動ack,需要在業(yè)務(wù)代碼結(jié)束后,調(diào)用api發(fā)送ack。
  2. auto:自動ack,由spring監(jiān)測listener代碼是否出現(xiàn)異常,沒有異常則返回ack;拋出異常則返回nack
  3. none:關(guān)閉ack,MQ假定消費者獲取消息后會成功處理,因此消息投遞后立即被刪除。
    在實際生產(chǎn)場景中使用的是auto模式。
    如果確認消息丟失了怎么辦捏?
    我們可以利用Spring的retry機制,在消費者出現(xiàn)異常時利用本地重試,設(shè)置重試次數(shù),當(dāng)次數(shù)達到了以后,如果消息依然失敗,將消息投遞到異常交換機,交由人工處理。

常見問題和回答模板

RabbitMQ如何保證消息不丟失?

回答:(背熟以下回答大概用時2min)

RabbitMQ分別提供了三個機制,第一個是生產(chǎn)者確認機制,用來保證消息成功到達交換機,且成功到達隊列。第二個是持久化機制,用來保證消息不在隊列中丟失。第三個是消費者確認機制,用來保證消息成功到達消費者。通過以上三種機制可以綜合保證消息不丟失。

首先是生產(chǎn)者確認機制,如果消息未能成功到達交換機,那么就返回nack publish-confirm,如果消息未能成功到達隊列,那么就返回ack publish-return。通過返回的信號不同,我們可以判斷具體是哪個環(huán)節(jié)出了問題并采取對應(yīng)手段,譬如:用回調(diào)方法即使重發(fā)或者保存到數(shù)據(jù)庫然后定時重發(fā)等。

然后是持久化機制,因為MQ是基于內(nèi)存的存儲,所以我們需要持久化來保證消息不會在隊列中丟失。我們一共需要持久化三部分,分別是交換機、隊列和消息本身,都是通過代碼完成的。

最后是消費者確認機制,只有消費者接受到消息并返回ack信號后,RabbitMQ才會刪除該消息。框架一般支持自動確認、手動確認和不確認三種模式。我們一般選的都是自動確認。如果確認發(fā)現(xiàn)消息在這個環(huán)節(jié)丟失,那么也會有相應(yīng)的retry機制。文章來源地址http://www.zghlxwxcb.cn/news/detail-821240.html

到了這里,關(guān)于消息中間件之八股面試回答篇:一、問題概覽+MQ的應(yīng)用場景+RabbitMQ如何保證消息不丟失(生產(chǎn)者確認機制、持久化、消費者確認機制)+回答模板的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【Java面試丨消息中間件】Kafka

    【Java面試丨消息中間件】Kafka

    1. 介紹 使用kafka在消息的收發(fā)過程都有可能會出現(xiàn)消息丟失 (1)生產(chǎn)者發(fā)送消息到broker丟失 (2)消息在broker中存儲丟失 (3)消費者從broker接收消息丟失 2. 生產(chǎn)者發(fā)送消息到broker丟失 設(shè)置異步發(fā)送:同步發(fā)送會發(fā)生阻塞,一般使用異步發(fā)送方式發(fā)送消息 消息重試:由于網(wǎng)

    2024年02月11日
    瀏覽(30)
  • 消息中間件中常見問題

    消息中間件中常見問題

    MQ的用途 異步發(fā)送(驗證碼,短信,郵件) MySQL,ES,Redis之間的數(shù)據(jù)同步 分布式事務(wù) 削峰填谷 消息可能丟失的環(huán)境 消息在產(chǎn)生端時候生產(chǎn)端掛掉,消息未到達交換機,消息丟失 消息在交換機未到達隊列,消息丟失 消息隊列中如果隊列掛掉消息也可能丟失 消費者未接收消

    2024年02月15日
    瀏覽(32)
  • 消息中間件學(xué)習(xí)筆記--RabbitMQ(二、模式,一次違反常規(guī)的Java大廠面試經(jīng)歷

    消息中間件學(xué)習(xí)筆記--RabbitMQ(二、模式,一次違反常規(guī)的Java大廠面試經(jīng)歷

    .Fanout:轉(zhuǎn)發(fā)消息到所有綁定隊列 比較常用的是Direct、Topic、Fanout. Fanout 這種Fanout模式不處理路由鍵,只·需要簡單的將隊列綁定到exchange上,一個發(fā)送到exchange的消息都會被轉(zhuǎn)發(fā)到與該exchange綁定的所有隊列上。很像廣播子網(wǎng),每臺子網(wǎng)內(nèi)的主機都獲得了一份復(fù)制的消息。Fan

    2024年04月09日
    瀏覽(29)
  • 【中間件】消息中間件之Kafka

    一、概念介紹 Apache Kafka是一個分布式流處理平臺,用于構(gòu)建實時數(shù)據(jù)管道和流應(yīng)用。它可以處理網(wǎng)站、應(yīng)用或其他來源產(chǎn)生的大量數(shù)據(jù)流,并能實時地將這些數(shù)據(jù)流傳輸?shù)搅硪粋€系統(tǒng)或應(yīng)用中進行處理。 核心概念: Topic(主題) :消息的分類,用于區(qū)分不同的業(yè)務(wù)消息。

    2024年01月20日
    瀏覽(42)
  • 【JAVA開發(fā)面試】如何處理并發(fā)訪問如何進行代碼的單元測試Java多線程編程消息中間件設(shè)計模式技術(shù)難題是如何解決的

    【 點我-這里送書 】 本人詳解 作者:王文峰,參加過 CSDN 2020年度博客之星,《Java王大師王天師》 公眾號:JAVA開發(fā)王大師,專注于天道酬勤的 Java 開發(fā)問題 中國國學(xué)、傳統(tǒng)文化和代碼愛好者的程序人生,期待你的關(guān)注和支持!本人外號:神秘小峯 山峯 轉(zhuǎn)載說明:務(wù)必注明

    2024年02月03日
    瀏覽(131)
  • RabbitMQ 消息中間件 消息隊列

    RabbitMQ 消息中間件 消息隊列

    RabbitMQ 1、RabbitMQ簡介 RabbiMQ是?Erang開發(fā)的,集群?常?便,因為Erlang天?就是??分布式語?,但其本身并 不?持負載均衡。支持高并發(fā),支持可擴展。支持AJAX,持久化,用于在分布式系統(tǒng)中存儲轉(zhuǎn)發(fā)消息,在易用性、擴展性、高可用性等方面表現(xiàn)不俗。 2、RabbitMQ 特點 可

    2024年02月03日
    瀏覽(93)
  • 【消息中間件】詳解mq消息積壓

    【消息中間件】詳解mq消息積壓

    作者簡介 目錄 1.產(chǎn)生原因 2.解決辦法 2.1.事前處理機制 2.2.事中處理機制 2.3.事后處理機制 消息積壓(Message Backlog)指的是在消息隊列(MQ)系統(tǒng)中等待被處理的消息數(shù)量超過了正常的處理速度,導(dǎo)致消息在隊列中積壓堆積的情況。 消息積壓的常見表現(xiàn): 系統(tǒng)資源使用率上升

    2024年02月07日
    瀏覽(30)
  • 消息隊列中間件(一)

    消息隊列中間件(一)

    流量削峰 應(yīng)用解耦 異步處理 ActiveMQ 優(yōu):單機吞吐萬級,時效性ms級,可用性高(主從架構(gòu)),可靠性高(丟失率低) 缺:官方維護少,高吞吐場景較少使用 Kafka 大數(shù)據(jù) - 數(shù)據(jù)采集,傳輸,存儲 優(yōu):高吞吐量(百萬級),時效性ms級,可用性高,日志成熟 缺:短輪詢,失敗

    2024年02月11日
    瀏覽(86)
  • 消息中間件-RocketMQ

    消息中間件-RocketMQ

    ????????RocketMQ是阿里巴巴開源的消息分布中間件,在阿里內(nèi)部使用非常更廣泛,已經(jīng)經(jīng)過了“雙11”這種萬億級的應(yīng)用場景考驗。 1.安裝 ????????下載地址:http://rocketmq.apache.org/release_notes/release-notes-4.4.0/ ????????下載完成后解壓縮安裝包到指定目錄。 2.配置 ? ?

    2024年02月09日
    瀏覽(26)
  • 如何選擇消息中間件

    如何選擇消息中間件

    一、 分布式系統(tǒng)消息通信技術(shù)簡介 ? 分布式系統(tǒng)消息通信技術(shù)主要包括以下幾種: ? 1. RPC(Remote Procedure Call Protocol). 一般是C/S方式,同步的,跨語言跨平臺,面向過程 ? 2. CORBA(Common Object Request Broker Architecture). CORBA從概念上擴展了RPC。面向?qū)ο蟮模髽I(yè)級的(面向?qū)ο笾虚g件還

    2024年02月10日
    瀏覽(19)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包