當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringBoot高级消-息-RabbitMQ基本概念简介
生活随笔
收集整理的這篇文章主要介紹了
SpringBoot高级消-息-RabbitMQ基本概念简介
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先對RabbitMQ做一個簡單的介紹,和快速入門,RabbitMQ是我們的AMQP,就是我們高級消息隊列的一個實現產品,他的穩定性和可靠性呢非常高,也是我們現在一個非常流行的一個消息中間件,那么我們了解一下他的核心概念,作為一個消息隊列產品,他非常重要的一個概念,就叫Message,也就是我們說的一個消息,這個消息是我們發送者,給我們消息代理,也就是我們消息隊列服務器,發送的數據內容,這個消息他由消息頭和消息體組成,就類似于HTTP協議里面的,請求頭和請求體一樣,消息體是我們發出去的數據,它是不透明的,我們程序員定制的,而消息頭呢,是一系列可選的屬性組,比如一個叫路由鍵,每一個消息到底要發給誰,是直接由他來指定的,就類似我們要把消息發到網絡里邊,指定一個IP地址一樣,后面我們詳細再說,priority消息的優先權,包括delivery-model消息是否需要持久化存儲,還有我們的publisher,他叫消息的生產者,我們這個publisher,我們簡稱這個p,他們將我們的message消息,它會直接先發給我們的服務器,服務器我們之前稱之為消息代理,MessagerBoker,所以他是我們的消息發送者,我們也叫消息生產者,而這個消息呢,他是直接發送給我們消息MessagerBroker,服務器里面有一個叫交換器,這個交換器是我們高級消息協議里面的,他是用來接收我們這個生產者,發送過來的消息,并且將相應的消息路由到相應的隊列,這個交換器跟我們現實生活中的路由器是類似的,我們把消息交給交換器,這個交換器綁定了很多隊列,跟查了很多網線一樣,那我們這個數據到底要到達哪根網線,交換器是通過路由來決定的,你這個路由件是誰就到達什么,在RabbitMQ中呢,我們這個Exchange,有四種類型,direct,fanout,topic,headers,direct可以實現JMS中點對點,后面三個可以實現發布訂閱模型,這些在后來會做詳細的解釋,在這一塊只需要清楚,消息是通過交換器來決定消息,發往哪個隊列,發到哪
Quene我們稱之為消息隊列,消息隊列其實就是用來保存消息的,它是我們消息的容器,也是消息發送到消息服務器,最終我們來到隊列里面,這個隊列里面的消息呢,它會一直等到某一個人,連接這個隊列以后,將這個隊列里面的消息,取走這個消息隊列就不會存在了,這個就是消息隊列,而一個消息是如何抵達隊列呢,結合我們以前的概念,首先是我們消息的生產者,這個生產者他創建一個消息,這個消息先發給消息隊列服務器,但是先會到達消息服務器的Exchange,交換器,這個交換器根據你發的消息,指定的路由件,我給你派給某一個隊列,在我們這個消息隊列服務器里面,可能有非常多的隊列,我根據你這個路由件,把你派發到某一個隊列里面,你這個消息就會被放到隊列,而這種派發規則,就相當于我們這個隊列,要跟我們這個交換器要做關聯,這個關聯關系就稱為綁定,其實就是我們這個交換器,和我們這些消息隊列,共同組成的一個路由表,而我們說這個交換器,和隊列之間的綁定關系,是可以多對多的,一個交換器可以綁定多個隊列,那么一個隊列呢,可以由多個交換器都來綁定上,你不管消息發給哪個交換器,比如這三個交換器,綁定這一個隊列,都能到達一個隊列,這樣我們再來說一個Connection,網絡連接,我們要操作消息隊列,我們要建立起連接,所謂的信道呢,是為了解決多路復用的,如果我們每去消息隊列里面,來取一個消息,我們都建立一條TCP連接,那么這是非常耗費資源的,所以我們這個消息隊列服務器呢,跟他建連接的時候,它是來建立一條TCP連接,然后如果我們要獲取數據,他就在整條的tcp連接里面,來開多個信道,這個信道就是我們來真正發送數據,訂閱隊列,接收消息的通道,所以他是為了節省資源的操作
我們叫生產者發布者,發送消息的人就叫消費者Consumer,而我們的VirtualHost,我們稱為虛擬主機,簡稱叫做Vhost,他其實就是說,把我們整個rabbitmq服務器,我們可以劃分出很多的虛擬主機,每一個虛擬主機,其實就是一個迷你版的rabbitmq,他們都是可以獨立運行的,而虛擬主機跟虛擬主機,之間是隔離的,每一個虛擬主機有他自己的消息隊列,包括有自己的交換器,還有自己的路由規則,還有自己的權限控制機制,包括你自己的身份認證的,加密信息等等,每個虛擬主機都是不一樣的,那我們連接我們的rabbitmq的時候呢,我們必須指定我們的虛擬主機,虛擬主機默認是/,是通過路徑來劃分的,你這個虛擬主機叫/abc,等等都行,還有我們的broker,我們也稱之為messagerbroker,翻譯過來就叫消息代理,所謂的消息代理,指的就是我們這個服務器,那么這些概念之間的相互交互,是這樣子的,我們消息的發布者,也叫生產者,我們這里發了一個消息,這個消息發給消息代理,也就是會我們這個服務器,發給服務器里面的Vhost,叫虛擬主機,虛擬主機里面有非常多的交換器,我們先把消息發給虛擬主機,虛擬主機發給指定的交換器,這個交換器再根據我們的路由件,我們要看到底要把扔到哪個消息隊列里面,那么這個路由規則,就是通過綁定關系來表示的,那么當我們消息到達消息隊列以后,我們消費者就可以從消息隊列里面取消息了,怎么取呢,我們消費者就跟消息隊列建立起連接,這個建立起連接以后呢,為了資源多路復用,我們每一條TCP連接里面,開辟很多的管道,這個管道里邊數據進行交互,我們從消息隊列里面拿到的數據,通過這個管道返回給消費者
?
總結
以上是生活随笔為你收集整理的SpringBoot高级消-息-RabbitMQ基本概念简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBoot高级-消息-JMSA
- 下一篇: SpringBoot高级消息-Rabbi