日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

SpringBoot整合RabbitMQ四種交換機類型詳解

來源: 責編: 時間:2023-08-14 22:01:41 413觀看
導讀環境:Spring Boot2.3.10 + RabbitMQ 3.8.12 + Erlang 23.2.51.1 RabbitMQ介紹RabbitMQ是實現了高級消息隊列協議(AMQP)的開源消息代理軟件(亦稱面向消息的中間件)。RabbitMQ服務器是用Erlang語言編寫的。所有主要的編程語

環境:Spring Boot2.3.10 + RabbitMQ 3.8.12 + Erlang 23.2.59Eq28資訊網——每日最新資訊28at.com

1.1 RabbitMQ介紹

RabbitMQ是實現了高級消息隊列協議(AMQP)的開源消息代理軟件(亦稱面向消息的中間件)。RabbitMQ服務器是用Erlang語言編寫的。所有主要的編程語言均有與代理接口通訊的客戶端庫。9Eq28資訊網——每日最新資訊28at.com

1.2 RabbitMQ核心概念

Server:又稱Broker, 接受客戶端的連接,實現AMQP實體服務,這里指RabbitMQ 服務器9Eq28資訊網——每日最新資訊28at.com

Connection:連接,應用程序與Broker的網絡連接。9Eq28資訊網——每日最新資訊28at.com

Channel:通信通道,幾乎所有的操作都在 Channel 中進行,Channel是進行消息讀寫的通道??蛻舳丝山⒍鄠€Channel:,每個Channel代表一個會話任務。(一個Socket連接可以創建多個Channel)9Eq28資訊網——每日最新資訊28at.com

Virtual Host:虛擬主機,用于邏輯隔離,是最上層的消息路由。一個 Virtual Host 里面可以有若干個 Exchange(交換機)和 Queue(隊列)。9Eq28資訊網——每日最新資訊28at.com

Binding:Exchange 和 Queue 之間的虛擬綁定關系。9Eq28資訊網——每日最新資訊28at.com

Routing key:一 個路由規則,虛擬機可用它來確定如何路由一個特定消息,即交換機綁定到 Queue 的鍵。支持模式匹配,* 和#,*用來匹配一個單詞,#用來匹配多個單詞(可以是0個)這里的通配符只有在exchange的類型為topic才有效。9Eq28資訊網——每日最新資訊28at.com

Queue:也稱為Message Queue,消息隊列,保存消息并將它們轉發給消費者。(接收端通過監聽Queue來接受消息)。9Eq28資訊網——每日最新資訊28at.com

Message:消息,服務器和應用程序之間傳送的數據,由 Properties 和 Body 組成。Properties 可以對消息進行修飾,比如消息的優先級、延遲,過期時間,消息大小等高級特性;,Body 則就 是消息體內容。9Eq28資訊網——每日最新資訊28at.com

Exchange類型:如下四種類型:fanout,headers,direct,topic。9Eq28資訊網——每日最新資訊28at.com

圖片圖片9Eq28資訊網——每日最新資訊28at.com

9Eq28資訊網——每日最新資訊28at.com

  • 新建隊列:fanout-queue1,fanout-queue2,fanout-queue3

圖片圖片9Eq28資訊網——每日最新資訊28at.com

9Eq28資訊網——每日最新資訊28at.com

按照上面的方式分別建立3個隊列。9Eq28資訊網——每日最新資訊28at.com

  • 將fanout-exchange與3個隊列(fanout-queue*)進行綁定

圖片圖片9Eq28資訊網——每日最新資訊28at.com

將3個隊列分別于fanout-exchange進行綁定,這里在綁定時分別設定了不同的路由key,就是為了驗證fanout類型的交換機是否與routing key有關系。9Eq28資訊網——每日最新資訊28at.com

  • 測試

發送接口:9Eq28資訊網——每日最新資訊28at.com

@RestController@RequestMapping("/messages")public class MessageController {  @Resource  private MessageSend ms ;  @GetMapping("/sendFanout")  public Object send(String msg) {    ms.send(msg) ;    return "success" ;}}@Resourceprivate RabbitTemplate rabbitTemplate ;public void send(String msg) {  logger.info("準備發送消息:{}", msg);  rabbitTemplate.convertAndSend("fanout-exchange", "rk.1.2", msg) ;}

這里故意設置了路由key 就是為了看fanout類型的交換機是否與routing key 有關系。9Eq28資訊網——每日最新資訊28at.com

圖片圖片9Eq28資訊網——每日最新資訊28at.com

3個隊列都收到了消息,說明fanout類型的交換機與綁定queue時routing key是沒有關系的,只要綁定了該類型的交換機都會收到消息。9Eq28資訊網——每日最新資訊28at.com

2、headers類型交換機9Eq28資訊網——每日最新資訊28at.com

  • 通過RabbitMQ控制臺新建headers類型交換機:headers-exchange

圖片圖片9Eq28資訊網——每日最新資訊28at.com

  • 新建隊列:headers-queue1,headers-queue2

圖片圖片9Eq28資訊網——每日最新資訊28at.com

  • 將headers-exchange與2個隊列(headers-queue*)進行綁定

圖片圖片9Eq28資訊網——每日最新資訊28at.com

  • 測試

發送接口9Eq28資訊網——每日最新資訊28at.com

@GetMapping("/sendHeaders")public Object sendHeaders(String msg) {  ms.sendHeaders(msg) ;  return "success" ;}public void sendHeaders(String msg) {  logger.info("準備發送消息:{}", msg);  Message message = MessageBuilder.withBody(msg.getBytes()).setHeader("a", "b").setHeader("pack", "xg").build() ;  rabbitTemplate.send("headers-exchange", "rk.1.2", message) ;}

注意:這里設置了Header信息與headers-exchange和headers-queue1綁定時設置的參數完全相同。9Eq28資訊網——每日最新資訊28at.com

圖片圖片9Eq28資訊網——每日最新資訊28at.com

headers-queue2就沒有收到消息。如果在進行綁定時沒有設置x-match參數默認是完全要匹配綁定時設定的參數,也就是x-match:all。如下,如果不配置x-match也就相當于:9Eq28資訊網——每日最新資訊28at.com

圖片圖片9Eq28資訊網——每日最新資訊28at.com

兩個隊列都收到了消息。9Eq28資訊網——每日最新資訊28at.com

3、direct類型交換機9Eq28資訊網——每日最新資訊28at.com

  • 通過RabbitMQ控制臺新建direct類型交換機:direct-exchange

圖片圖片9Eq28資訊網——每日最新資訊28at.com

  • 新建隊列:direct-queue1,direct-queue2

圖片圖片9Eq28資訊網——每日最新資訊28at.com

  • 將direct-exchange與2個隊列(direct-queue*)進行綁定

圖片9Eq28資訊網——每日最新資訊28at.com

2個隊列都收到了消息。9Eq28資訊網——每日最新資訊28at.com

4、topic類型交換機9Eq28資訊網——每日最新資訊28at.com

  • 通過RabbitMQ控制臺新建topic類型交換機:topic-exchange

圖片圖片9Eq28資訊網——每日最新資訊28at.com

  • 新建隊列:topic-queue1,topic-queue2

圖片圖片9Eq28資訊網——每日最新資訊28at.com

  • 將topic-exchange與2個隊列(topic-queue*)進行綁定

圖片圖片9Eq28資訊網——每日最新資訊28at.com

兩個隊列都收到了消息。9Eq28資訊網——每日最新資訊28at.com

修改發送消息的routing key9Eq28資訊網——每日最新資訊28at.com

rabbitTemplate.convertAndSend("topic-exchange", "te.2.ok", msg) ;

圖片圖片9Eq28資訊網——每日最新資訊28at.com

只有topic-queue2收到了消息,因為綁定時設置的routing-key 是:9Eq28資訊網——每日最新資訊28at.com

圖片圖片9Eq28資訊網——每日最新資訊28at.com

能夠匹配多個單詞。9Eq28資訊網——每日最新資訊28at.com

以上就介紹完了rabbitmq的四種交換機類型。9Eq28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-5752-0.htmlSpringBoot整合RabbitMQ四種交換機類型詳解

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 谷歌全棧多平臺應用開發神器Project IDX來了!PaLM 2加持,代碼效率翻倍

下一篇: 前端請求大比拼:Fetch、Axios、Ajax、XHR

標簽:
  • 熱門焦點
  • 一加Ace2 Pro真機揭曉 鈦空灰配色質感拉滿

    終于,在經過了幾波預熱之后,一加Ace2 Pro的外觀真機圖在網上出現了。還是博主數碼閑聊站曝光的,這次的外觀設計還是延續了一加11的方案,只是細節上有了調整,例如新加入了鈦空灰
  • 6月iOS設備好評榜:第一蟬聯榜首近一年

    作為安兔兔各種榜單里變化最小的那個,2023年6月的iOS好評榜和上個月相比沒有任何排名上的變化,僅僅是部分設備好評率的下降,長年累月的用戶評價和逐漸退出市場的老款機器讓這
  • 帥氣純真少年!日本最帥初中生選美冠軍出爐

    日本第一帥哥初一生選美大賽冠軍現已正式出爐,冠軍是來自千葉縣的宗田悠良。日本一直熱衷于各種選美大賽,從“最美JK”起到“最美女星&r
  • 一個注解實現接口冪等,這樣才優雅!

    場景碼猿慢病云管理系統中其實高并發的場景不是很多,沒有必要每個接口都去考慮并發高的場景,比如添加住院患者的這個接口,具體的業務代碼就不貼了,業務偽代碼如下:圖片上述代碼有
  • ESG的面子與里子

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之三伏大幕拉起,各地高溫預警不絕,但處于厄爾尼諾大“烤”之下的除了眾生,還有各大企業發布的ESG報告。ESG是“環境保
  • 重估百度丨大模型,能撐起百度的“今天”嗎?

    自象限原創 作者|程心 羅輯2023年之前,對于自己的“今天”,百度也很迷茫。“新業務到 2022 年底還是 0,希望 2023 年出來一個 1。”這是2022年底,李彥宏
  • 華為HarmonyOS 4.0將于8月4日發布 或搭載AI大模型技術

    華為宣布HarmonyOS4.0將于8月4日正式發布。此前,華為已經針對開發者公布了HarmonyOS4.0,以便于開發者提前進行適配,也因此被曝光出了一些新系統的特性
  • 2納米決戰2025

    集微網報道 從三強爭霸到四雄逐鹿,2nm的廝殺聲已然隱約傳來。無論是老牌勁旅臺積電、三星,還是誓言重回先進制程領先地位的英特爾,甚至初成立不久的新
  • 外交部:美方應停止在網絡安全問題上不負責任地指責他國

      中國外交部今天(16日)舉行例行記者會。會上,有記者問,美國情報官員稱,他們正在阻攔來自中國以及其他國家的黑客獲取相關科研成果。 中方對此有何評論?對此
Top 主站蜘蛛池模板: 武山县| 黄龙县| 淮滨县| 奎屯市| 高台县| 临沧市| 桂阳县| 虎林市| 水富县| 孟津县| 同德县| 云霄县| 茂名市| 恭城| 桐乡市| 岳阳市| 江川县| 辽阳县| 荆州市| 凤山县| 皋兰县| 长阳| 庄河市| 阳原县| 唐山市| 临西县| 酉阳| 克拉玛依市| 花垣县| 得荣县| 北流市| 朝阳市| 错那县| 鹿邑县| 伊金霍洛旗| 金门县| 阿合奇县| 龙山县| 深泽县| 东丰县| 荔浦县|