課程介紹
1. 學習目標
能夠獨立搭建RabbitMQ并實現消息發送和接收
2 學習內容
• RabbitMQ的環境搭建
• 使用純Java發送和接收消息
• 使用SpringBoot發送和接收消息
• 實戰案例開發
RabbitMQ是實現了高級消息隊列協議(AMQP)的開源消息代理軟件(亦稱面向消息的中間件)。RabbitMQ服務器是用Erlang語言編寫的,而集群和故障轉移是構建在開放電信平臺框架上的。所有主要的編程語言均有與代理接口通訊的客戶端庫。
• 什么是MQ?
MQ全稱為Message Queue, 消息隊列(MQ)是一種應用程序對應用程序的通信方法。
• 要解決什么樣的問題?
在項目中,將一些無需即時返回且耗時的操作提取出來,進行了異步處理,而這種異步處理的方式大大的節省了服務器的請求響應時間,從而提高了系統的吞吐量。
Rabbit科技有限公司開發了RabbitMQ,并提供對其的支持。起初,Rabbit科技是LSHIFT和CohesiveFT在2007年成立的合資企業,2010年4月被VMware旗下的SpringSource收購。RabbitMQ在2013年5月成為GoPivotal的一部分。
• 安裝Linux以及必要的依賴包(Centos7)
• 下載RabbitMQ的安裝包
• 安裝,修改相關配置
RabbitMQ是一套開源(MPL)的消息隊列服務軟件,是由 LShift 提供的一個 Advanced Message Queuing Protocol (AMQP) 的開源實現,由以高性能、健壯以及可伸縮性出名的 Erlang 寫成。
RabbitMQ服務支持下列操作系統:
RabbitMQ支持下列編程語言:
Server:又稱Broker接收客戶端的連接,實現AMQP實體服務
Connection:鏈接,用于應用程序鏈接到Broker
Channel:網絡通道,Channel是進行消息讀寫的一個通道每一個Channel都表示一個會話,有點類似我們之前的Session概念
Message:消息,消息就是我們真正用來進行傳輸的數據,Message由兩部分組成,Properties和Body,Properties用于對消息就行修飾,比如優先級或是否持久等,Body則是消息數據的主體
Virtual host:虛擬地址,用于進行邏輯隔離,一個Server擁有過多個Vitual hsot,一個Virual hsot會擁有多個Exchange(交換機)和Queue(隊列)
Exchange:交換機,用于具體接收消息并將消息根據綁定路由key存入到指定的隊列中
Binding:綁定,就是將Exchange和Queue鏈接在一起,通過一個Routing key進行綁定
Routing key:路由規則,消息發送到Exchang后會根據這個規則將消息存入對應的Queue
Queue:隊列也稱Message Queue簡稱MQ,用于存放消息,并使用隊列的結構先進先出、后進后出
3. RabbiMQ執行流程
RabbitMQ主要特性
• 可伸縮性:集群服務
• 消息持久化:從內存持久化消息到硬盤,再從硬盤加載到內存