【RabbitMQ | 第2篇】RabbitMQ 控制臺實現消息路由 + 數據隔離

文章目錄

  • 同步調用和異步調用
  • MQ
  • RabbitMQ
    • 1. RabbitMQ控制臺實現交換機路由到隊列
      • 1.1 創建隊列
      • 1.2 將消息發送給交換機,是否會到達隊列
    • 2. RabbitMQ控制臺實現數據隔離
      • 2.1 添加一個用戶
      • 2.2 創建新的虛擬主機

在這里插入圖片描述

同步調用和異步調用

同步調用是指完成一個功能,其內部有多個任務,要一直等待這幾個任務全都完成后,才算這個功能的結束。

e.g 比如,在登錄的時候,原本只需要校驗用戶名和密碼,但需求說的是,還需要給用戶發一條短信,或者還需要給用戶加積分之類的。如果是同步的話,那么用戶登錄就不僅僅是校驗用戶名和密碼,還要一直等待成功發送短信或加完積分后,才能進入網頁。
這樣,用戶等待時間較長,性能就比較差。

異步調用是指只完成必要的任務,其余任務交給消息代理,由消息代理去慢慢通知消息處理方處理,用戶就不需要一直等待,把任務通知給消息代理即可。
優點:性能較好,無需等待;緩存消息,流量削峰填谷。
缺點:不能立即調用結果;不確定后序任務時候執行成功;依賴于消息代理的可靠性。

在這里插入圖片描述

MQ

MQ(MessageQuque):消息隊列,存放消息的一種隊列。
常見:RabbitMQ、RocketMQ、Kafka、ActiveMQ。

RabbitMQRocketMQKafkaActiveMQ
公司Rabbit阿里ApacheApache
開發語言ErlangJavaScala&JavaJava
協議支持AMQP, XMPP, SMTP, STOMP自定義協議自定義協議OpenWrite, STOMP, REST, XMPP, AMQP
可用性一般
單機吞吐量(QPS)一般非常高
消息延遲微妙級毫秒級毫秒以內毫秒級
消息可靠性一般一般

RabbitMQ 的延遲性最好(微秒級),Kafka 的吞吐量最高(百萬級別的 QPS)。

RabbitMQ

publisher(消息發送者)、exchange(交換機)、queue(隊列)、consumer(消息消費者)、virtual-host(虛擬主機)
在這里插入圖片描述
消息模型:
消息發送者將消息發送給交換機,交換機路由到隊列,消費者監聽隊列。

為什么有 virtual-host 的存在 ?
一個公司中不同項目使用同一套 MQ 的服務,那這樣不同項目的交換機和隊列就可能會有沖突。所以就像數據庫一樣,每個項目有自己的 virtual-host,不同的 virtal-host 有不同的交換機和隊列,那么不同的 virtual-host 內的隊列和交換機就不會產生影響。 —— 數據隔離作用

1. RabbitMQ控制臺實現交換機路由到隊列

1.1 創建隊列

在這里插入圖片描述

1.2 將消息發送給交換機,是否會到達隊列

在這里插入圖片描述
交換機綁定隊列:
在這里插入圖片描述
綁定后,點擊綁定的隊列,可以看到:
在這里插入圖片描述
模擬交換機接受消息和路由消息:
在這里插入圖片描述
發送后,交換機顯示:
在這里插入圖片描述
發送后,隊列 hello.que1 中:
在這里插入圖片描述

交換機負責路由和轉發消息,本身不具備存儲消息的能力。

2. RabbitMQ控制臺實現數據隔離

2.1 添加一個用戶

在這里插入圖片描述
可以看到,此時新增的用戶是沒有虛擬主機的:
在這里插入圖片描述
點擊退出登錄后,使用剛剛新創建的用戶登錄:
在這里插入圖片描述
此時沒有虛擬主機,無法進行任何的操作的。

2.2 創建新的虛擬主機

在這里插入圖片描述
查看當前用戶的虛擬主機:
在這里插入圖片描述
切換至剛剛創建的虛擬主機下,就不存在之前創建的隊列了:
在這里插入圖片描述
不同虛擬主機下的交換機:
在這里插入圖片描述

一般,不同的項目就創建不同的虛擬主機,保證數據的隔離

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

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

相關文章

kubernetes》》k8s》》Heml

Heml 下載地址 安裝 curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash# helm 添加 倉庫 # helm repo add 倉庫名稱 倉庫地址 helm repo add stable http://mirror.azure.cn/kubernetes/charts/# 查看helm 倉庫列表 helm repo list # 結…

【專題刷題】二分查找(一):深度解刨二分思想和二分模板

📝前言說明: 本專欄主要記錄本人的基礎算法學習以及LeetCode刷題記錄,按專題劃分每題主要記錄:(1)本人解法 本人屎山代碼;(2)優質解法 優質代碼;&#xff…

鄉村治理數字化平臺:信息技術賦能鄉村振興的深度探索

在信息化技術飛速發展的背景下,數字化轉型已成為推動社會進步和治理現代化的關鍵力量。鄉村治理數字化平臺,作為信息技術在鄉村治理領域的深度應用,正逐步成為提升鄉村治理效能、推動鄉村振興的重要工具。本文將深入探討鄉村治理數字化平臺的…

PyQt6基礎_QTabWidget

目錄 代碼 運行 官方文檔 PySide6.QtWidgets.QTabWidget - Qt for Python 代碼 class TempWidget(QWidget):def __init__(self):super().__init__()self.tabs QTabWidget()self.tabs.tabBarClicked.connect(self.tabs_tabBarClicked)widget_tab1 QWidget()widget_tab2…

springboot在eclipse里面運行 run as 是Java Application還是 Maven

在 Eclipse 里運行 Spring Boot 項目時,既可以選擇以“Java Application”方式運行,也可以通過 Maven 命令來運行,下面為你詳細介紹這兩種方式及適用場景。 以“Java Application”方式運行 操作步驟 在項目中找到帶有 SpringBootApplicat…

怎樣記憶Precision、Recall?

首先,明確符號: TP(True Posive):標簽為正,預測為正 TN(True Negative):標簽為負,預測為負 FP(False Positive):標簽為負,預測為正 FN(False Negative):標簽為正&#xf…

【C語言】C語言動態內存管理

前言 在C語言編程中,內存管理一直是程序員需要重點關注的領域。動態內存管理更是如此,它不僅涉及到內存的靈活分配和釋放,還隱藏著許多潛在的陷阱。本文將從動態內存分配的基礎講起,逐步深入到常見的錯誤、經典筆試題分析&#x…

expres路由模塊化

Express 路由模塊化是實際開發中非常重要的一部分,可以讓你的項目結構更清晰、維護更方便。 🧱 一、為什么要模塊化? 隨著項目變大,如果所有路由都寫在 app.js 中,會很亂。使用模塊化后可以: 功能解耦&a…

C語言——填充矩陣

C語言——填充矩陣 一、問題描述二、格式要求1.輸入形式2.輸出形式3.樣例 三、實驗代碼 一、問題描述 編程實現自動填充nn矩陣元素數值,填充規則為:從第一行最后一列矩陣元素開始按逆時針方向螺旋式填充數值1,2,…,nn…

零基礎上手Python數據分析 (22)案例實戰]之利用 Matplotlib Seaborn 進行電商銷售數據可視化分析

寫在前面 —— 圖表為刃,洞察先行!綜合運用 Pandas、Matplotlib 與 Seaborn,點亮數據價值 本篇通過一個完整的案例實戰,體驗如何將數據分析與數據可視化緊密結合,讓冰冷的數據轉化為生動、直觀、富有洞察力的視覺故事! 案例目標: 本篇博客將延續我們在第 17 篇案例中…

Java開發經驗總結

只要刪繁、捋清脈絡,才能掌握本質!只有創新才有價值,保持創新、保持學習! 計劃:UNIAPPSPRINGBOOT學習、SPRINGBOOTVUE新版學習、頁面展示學習、PYTHON。 ***********************************************************…

深入解析:RocketMQ、RabbitMQ和Kafka的區別與使用場景

互聯網大廠Java求職者面試:RocketMQ、RabbitMQ和Kafka的深入解析 故事場景:嚴肅且專業的面試官與架構師程序員馬架構 在一家知名的互聯網大廠,Java求職者正在接受一場嚴格的面試。面試官是一位經驗豐富的技術專家,他將通過多輪提…

使用vue2開發一個醫療預約掛號平臺-前端靜態網站項目練習

對于后端開發的我,最近一直在學習前端開發,除了要學習一些前端的基礎知識外,肯定少不了一些前端項目練習,就通過前端的編程知識 就簡單做一個醫療預約掛號前端靜態頁面。這個網站主要是使用了vue2 的相關技術實現的。 主要實現了這…

MongoDB(docker版)備份還原

docker啟動MongoDB docker run -d -p 27017:27017 --name my-mongo -v /mongodb/db:/data/db mongo備份MongoDB 使用mongodump備份數據庫時,默認會將備份數據保存在當前工作目錄下的dump文件夾中。 docker容器中默認備份在當前工作目錄,所以此處指定當…

zkPass案例實戰之合約篇

目錄 一、contracts/contracts/ProofVerifier.sol 1. License 和 Solidity 版本 2. 導入依賴 3. 合約聲明和默認分配器地址 4. 驗證證明 5. 驗證分配器簽名 6. 驗證驗證者簽名 7. 簽名前綴處理 8. 簽名恢復 總結 二、contracts/contracts/SampleAttestation.sol 1. …

ElasticSearch:高并發場景下如何保證讀寫一致性?

在Elasticsearch高并發場景下,可以通過以下多種方式來保證讀寫一致性: 等待主分片和副本分片都確認(類似半同步機制) 設置consistency參數:在寫操作時,可以設置consistency參數來控制寫操作的一致性級別。…

8、constexpr if、inline、類模版參數推導、lambda的this捕獲、初始化列表、namespace---c++17

一、constexpr if:編譯時條件分支 作用:在模板編程中,根據條件在編譯時選擇不同的代碼路徑,無需特化版本或復雜SFINAE技巧[替代SFINAE]。[SFINAE將在模版元編程再講。下個月了。] 注意:默認使用了隱式inline 基本語法…

【Java設計模式及實踐學習-第4章節-結構型模式】

第4章節-結構型模式 筆記記錄 1. 適配器模式2. 代理模式3. 裝飾器模式4. 橋接模式5. 組合模式6. 外觀模式7. 享元模式8. 總結 1. 適配器模式 2. 代理模式 3. 裝飾器模式 4. 橋接模式 5. 組合模式 6. 外觀模式 7. 享元模式 Java語言中的String字符串就使用了享元模式&…

unity基礎自學2.3:移動和抓握物品

文章目錄 前言:1、基礎配置①XR Interaction Toolkit②創建一個XR場景③示例文件實現④ 一鍵配置(PICO Building Blocks) 2、射線移動物品和抓握物品方法一:Grab Interactable方法二:prefab 3、Box Collider的作用與使…

pytest基礎-new

規范 1、首先創建 py 文件命名以 test_ 開始或者以 _test 結尾 2、若是新建類,測試類需要以 Test_開頭 3、測試用例(方法)需要以 test_開頭 assert 斷言 assert xx:判斷 xx 為真 assert not xx:判斷 xx 不為真 asse…