RabbitMQ常見面試題回答重點

文章目錄

  • 什么是消息隊列?
  • 為什么需要消息隊列
  • 消息隊列的模型
  • 消息隊列常見名詞
  • 如何保證消息不丟失?(可靠性)
  • 如何保證消息不重復/業務冪等性
  • 如何保證消息有序性
  • 如何處理消息堆積
  • 消息隊列設計為推送還是拉取 / 推拉模式優點
  • 無法路由的消息怎么處理的
  • 消息什么時候會進入死信交換機
  • 死信隊列有哪些應用
  • 聊一聊AMQP協議
  • RabbitMQ的事務機制
  • RabbitMQ核心名詞
  • RabbitMQ中的routing key 以及 binding key 最大長度是多少字節?
  • RabbitMQ工作模式
  • RabbitMQ集群模式
  • RabbitMQ延遲隊列實現

什么是消息隊列?

  • 異步通信

為什么需要消息隊列

  • 異步處理

  • 服務解耦

  • 流量控制

消息隊列的模型

  • 隊列模型
  • 發布/訂閱 模型

消息隊列常見名詞

  • 生產者 / 消費者 /Broker / 隊列 /主題

  • 消息確認

  • 死信隊列

  • 命名服務

  • 集群

  • 分區和隊列

  • 消費組

在這里插入圖片描述

如何保證消息不丟失?(可靠性)

  • 生產者消息確認
  • 消費者消息確認
  • 消息持久化

如何保證消息不重復/業務冪等性

  • 消息ID去重
  • 結果業務邏輯優化

如何保證消息有序性

  • 順序隊列(RabbitMQ)
  • 分區與順序鍵(Kafka、RocketMQ)

如何處理消息堆積

  • 排除代碼原因例如BUG
  • 限流 / 降級
  • 消費者擴容
  • 批量消費
  • 異步消費

消息隊列設計為推送還是拉取 / 推拉模式優點

  • 推:實時
  • 拉:限流

無法路由的消息怎么處理的

  • 丟棄
  • 指定備份交換機(死信交換機/隊列)
  • Return Listener 回退機制

消息什么時候會進入死信交換機

  • 被拒絕且requeue設置為false
  • 過期 ttl到期
  • 超出max-length

死信隊列有哪些應用

  • 拒絕消息
  • 處理類似超時訂單的業務
  • 隊列限流
  • 實現延遲隊列

聊一聊AMQP協議

  • 應用層
  • 面向消息、異步
  • 五大組成
  • 交換機類型
  • 可靠傳輸
  • 對比MQTT
  • 對比JMS

RabbitMQ的事務機制

  • 消息發送原子性
  • 發布確認模式
  • 性能瓶頸

RabbitMQ核心名詞

  • 生產 /消費
  • 交換機
  • 隊列
  • Binding
  • Routing Key

RabbitMQ中的routing key 以及 binding key 最大長度是多少字節?

  • 255

RabbitMQ工作模式

  • simple
  • work
  • 發布 /訂閱
  • routing
  • topic
  • rpc
  • 發布 /確認

RabbitMQ集群模式

  • 標準集群
  • 鏡像集群
  • 聯邦集群

RabbitMQ延遲隊列實現

  • 死信隊列+TTL
  • 延遲消息插件

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/77855.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77855.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/77855.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

欣佰特攜數十款機器人相關前沿產品,亮相第二屆人形機器人和具身智能行業盛會

2025年4月15日至16日,備受關注的第二屆中國人形機器人與具身智能產業大會已在北京成功舉行。作為國內前沿科技及產品服務領域的重要參與者,欣佰特科技攜眾多前沿產品精彩亮相,全方位展示了其在人形機器人與具身智能領域的創新產品。 在本次大…

Docker安裝 (centos)

1.安裝依賴包: sudo yum install -y yum-utils device-mapper-persistent-data lvm2 2.刪除已有的 Docker 倉庫文件(如果有): sudo rm -f /etc/yum.repos.d/docker-ce.repo 3.添加阿里云的 Docker 倉庫: sudo yum…

Vue接口平臺學習十——接口用例頁面2

效果圖及簡單說明 左邊選擇用例,右側就顯示該用例的詳細信息。 使用el-collapse折疊組件,將請求到的用例詳情數據展示到頁面中。 所有數據內容,綁定到caseData中 // 頁面綁定的用例編輯數據 const caseData reactive({title: "",…

服務器數據遷移指南

服務器數據遷移是將數據從一臺服務器轉移到另一臺服務器的過程,可能是為了硬件升級、云遷移、數據中心搬遷或服務整合。 以下是數據遷移的關鍵步驟和注意事項: 遷移前準備 制定遷移計劃 確定遷移范圍(全量/增量) 評估數據量和網絡帶寬 制定時間表和回…

25.解決中醫知識問答刪除歷史對話功能后端處理請求時拋出異常

ChatTest.vue:176 DELETE http://localhost:8080/api/chat/conversations/20 500 (Internal Server Error) deleteConversation ChatTest.vue:176 onClick ChatTest.vue:22 ChatTest.vue:185 刪除失敗 AxiosError {message: Request failed with status code 500, name: Axio…

記錄seatunnel排查重復數據的案例分析

文章目錄 背景分析檢查現象檢查B集群是否有異常,導致重復消費的分析同步任務 修復問題發現flink job 一直報異常修復問題 背景 使用seatunnel 同步數據從A 集群kafka 同步到B集群kafka,現象是發現兩邊數據不一致,每天10w級別會多幾十條數據 分析 檢查…

VSCode遠程圖形化GDB

VSCode遠程圖形化GDB 摘要一、安裝VSCode1、使用.exe安裝包安裝VSCode2、VSCode 插件安裝3、VSCode建立遠程連接 二、core dump找bug1、開啟core文件2、永久生效的方法3、編寫測試程序4、運行結果5、查看core段錯誤位置6、在程序中開啟core dump并二者core文件大小 三、gdbserv…

Android 中實現 GIF 圖片動畫

在 Android 中,ImageView 從 Android 9.0(API 級別 28) 開始原生支持 GIF 動畫,通過 AnimatedImageDrawable 類實現。在之前的版本中,ImageView 并不支持直接播放 GIF 動畫,只能顯示 GIF 的第一幀。 一、 …

【c語言】指針進階

目錄 1.字符指針 2.指針數組 3.數組指針 3.1 數組指針的定義 3.2 數組指針的使用 4.數組參數,指針參數 4.1 一維數組傳參 4.2 二維數組傳參 4.3 一級指針傳參 4.4 二級指針傳參 5.函數指針 6.函數指針數組 6.1函數指針數組的定義 6.2 函數指針數組…

極狐GitLab 項目 API 的速率限制如何設置?

極狐GitLab 是 GitLab 在中國的發行版,關于中文參考文檔和資料有: 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 項目 API 的速率限制 (BASIC SELF) 引入于 15.10 版本,功能標志為rate_limit_for_unauthenticated_projects_api_…

【xlog日志文件】怎么刪除里面包含某些字符串的行(使用excel)

將log日志,復制到單獨一行 B列(可能一行很長,所以將整合后的放在A列) 使用公式可以篩選出 包含某些字符串的行 為true,將這些行直接刪除 IF(COUNT(FIND("MediaMuxterThreadRussia",B2,1))>0,"包含",&quo…

STM32提高篇: CAN通訊

STM32提高篇: CAN通訊 一.CAN通訊介紹1.物理層2.協議層二.STM32CAN外設1.CAN控制器的3種工作模式2.CAN控制器的3種測試模式3.功能框圖三.CAN的寄存器介紹1.環回靜默模式測試2.雙擊互發測試四.CAN的HAL代碼解讀一.CAN通訊介紹 CAN(Controller Area Network 控制器局域網,簡稱…

Java寫數據結構:棧

1.概念: 一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。進行數據插入和刪除操作的一端稱為棧頂,另一端稱為棧底。棧中的數據元素遵守后進先出LIFO(Last In First Out)的原則。 壓棧:棧的插…

單頁面應用的特點,什么是路由,VueRouter的下載,安裝和使用,路由的封裝抽離,聲明式導航的介紹和使用

文章目錄 一.什么是單頁面應用?二.什么是路由?生活中的路由和Vue中的路由 三.VueRouter(重點)0.引出1.介紹2.下載與使用(5個基本步驟2個核心步驟)2.1 五個基本步驟2.2 兩個核心步驟 四.路由的封裝抽離五.聲明式導航1.導航鏈接特點一:能跳轉特點二:能高亮 2.兩個高亮類名2.1.區…

【C++】模板2.0

最近學習了一些模板的知識,速寫本博客作為學習筆記,若有興趣,歡迎垂閱讀! 1.非類型模板參數 模板參數分類類型形參與非類型形參。 類型形參即:出現在模板參數列表中,跟在class或者typename之類的參數類型名…

目標檢測中的損失函數(二) | BIoU RIoU α-IoU

BIoU來自發表在2018年CVPR上的文章:《Improving Object Localization With Fitness NMS and Bounded IoU Loss》 論文針對現有目標檢測方法只關注“足夠好”的定位,而非“最優”的框,提出了一種考慮定位質量的NMS策略和BIoU loss。 這里不贅…

如何在 Amazon EC2 上部署 Java(Spring Boot 版)

讓我們學習如何將 Java Spring Boot Web 服務器部署到 Amazon EC2。每月只需 3 美元。 使用 Azure,您可能不知道要花費多少錢。 Spring Boot 項目示例 在本教程中,我們將重點介紹如何將 Java Spring Boot 服務器部署到 Amazon EC2,因此我們不…

Git常用命令分類匯總

Git常用命令分類匯總 一、基礎操作 初始化倉庫git init添加文件到暫存區git add file_name # 添加單個文件 git add . # 添加所有修改提交更改git commit -m "提交描述"查看倉庫狀態git status二、分支管理 創建/切換分支git branch branch_name …

mysql——基礎知識

關鍵字大小寫不敏感 查看表結構中的 desc describe 描述 降序中的 desc descend 1. 數據庫的操作 1. 創建數據庫 create database 數據庫名;為防止創建的數據庫重復 CREATE DATABASE IF NOT EXISTS 數據庫名;手動設置數據庫采用的字符集 character set 字符集名;chars…

Redis 哨兵與集群腦裂問題詳解及解決方案

Redis 哨兵與集群腦裂問題詳解及解決方案 本文將深入探討Redis在哨兵模式和集群模式下可能出現的腦裂問題,包括其發生場景、原因以及有效的解決策略。同時,我們還將提供相應的代碼示例和配置方案來幫助讀者理解和實施。 一、腦裂問題概述 腦裂&#x…