好程式設計師Java學習資源分享RabbitMQ介紹
好程式設計師Java 學習資源分享 RabbitMQ 介紹,前言,RabbitMQ 是基於 AMQP 協議( Advanced Message Queue Protocol )的訊息中介軟體
什麼是訊息佇列
訊息佇列屬於程式間通訊的一種方式,使用訊息佇列可以透過非同步方式處理資料,藉此可以提高系統效能。我們可以把訊息當作存放資料的容器,訊息的消費者可以從佇列中獲取資料,進行處理。常見的訊息佇列有:ActiveMQ , RabbitMQ , Kafka , RocketMQ 等。
RabbitMQ 中用到基本概念
Broker :訊息佇列的伺服器實體
Exchange :訊息交換機,它指定訊息按什麼規則,路由到哪個佇列
Queue :訊息佇列載體,每個訊息都會被投入到一個或多個佇列
Binding :繫結,它主要是把 exchange 和 queue 按照路由規則繫結起來
Routing Key :路由關鍵字, exchange 根據這個關鍵字進行訊息投遞
vhost :虛擬主機,一個 broker 裡可以開設多個 vhost ,用作不同使用者的許可權分離
producer :訊息生產者,投遞訊息的程式
consumer :訊息消費者,接收訊息的程式
channel :訊息通道,在客戶端的每個連線裡,可以建立多個 channel ,每個 channel 代表一個會話任務
RabbitMQ 中訊息模式
1 簡單佇列
一個生產者對應一個消費者
2 工作佇列
一個生產者,多個消費者,一個訊息只能發給一個消費者,spring 中整合 rabbitmq 時,預設採用公平分發
3 釋出訂閱模式
傳遞一個訊息到多個消費者中,藉助該模式可以釋出的訊息將被廣播給所有接收者。
使用該模式需要藉助交換機,生產者將訊息傳送到交換機,再透過交換機到達佇列。
RabbitMQ 中有四種交換機: direct/topic/headers/fanout 。預設交換機是 direct ,釋出與訂閱的實現使用 fanout 。
使用交換機時,每個消費者有自己的佇列,生產者將訊息傳送到交換機(X),每個佇列都要繫結到交換機。
4 路由模式
生產者將訊息傳送到direct 交換機(路由模式需要藉助直連交換機實現),在繫結佇列和交換機的時候有一個路由 key ,生產者傳送的訊息會指定一個路由 key ,那麼訊息只會傳送到相應 key 相同的佇列,接著監聽該佇列的消費者消費訊息。也就是讓消費者有選擇性的接收訊息。
5 主題模式
又稱萬用字元模式。
使用直連交換機可以改善我們的系統,但是它仍有侷限性,它不能實現多重條件的路由。在訊息系統中,我們不僅想要訂閱基於路由鍵的佇列,還想訂閱基於生產訊息的源,這時候可以使用topic 交換機。
使用主題交換機時,路由鍵的語法形式是採用點分割的有意義的單詞。例如"goods.stock.info" 。
其中:* 星號代表一個單詞, # 井號代表 0 個或多個單詞
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2655602/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師Java學習路線分享Dubbo架構介紹程式設計師Java架構
- 好程式設計師Java教程分享MyBatis Plus介紹程式設計師JavaMyBatis
- 好程式設計師Java學習路線介紹Java到底是什麼?程式設計師Java
- 好程式設計師Java學習路線分享SpringCloud程式設計師JavaSpringGCCloud
- 好程式設計師分享Java學習經驗五彈程式設計師Java
- 好程式設計師Java教程分享Nginx靜態資源部署程式設計師JavaNginx
- 好程式設計師Java教程分享如何系統的學習Java程式設計師Java
- 好程式設計師Java學習路線分享mybatis對映程式設計師JavaMyBatis
- 好程式設計師Java分享JVM從哪方面入手學習程式設計師JavaJVM
- 好程式設計師Java學習路線分享Java框架怎麼搭建程式設計師Java框架
- 好程式設計師Java學習路線分享Java-String常用方法程式設計師Java
- 好程式設計師Java培訓分享學習Java需要哪些基礎程式設計師Java
- 好程式設計師Java培訓分享四種常用執行緒池介紹程式設計師Java執行緒
- 好程式設計師Java學習路線分享原生Ajax的使用程式設計師Java
- 好程式設計師Java學習路線分享finalize()方法詳解程式設計師Java
- 好程式設計師Java學習路線分享JVM相關概念程式設計師JavaJVM
- 好程式設計師Java學習路線分享MyBatis之Spring整合程式設計師JavaMyBatisSpring
- 好程式設計師Java學習路線分享Redis快速入門程式設計師JavaRedis
- 好程式設計師Java學習路線分享MyBatis之基本使用程式設計師JavaMyBatis
- 好程式設計師Java學習路線分享maven是什麼程式設計師JavaMaven
- 好程式設計師Java學習路線分享SpringMVC之MVC概述程式設計師JavaSpringMVC
- 好程式設計師大資料學習路線分享MAPREDUCE程式設計師大資料
- 好程式設計師大資料學習路線分享SparkSQl程式設計師大資料SparkSQL
- 好程式設計師Java學習路線分享JavaScript基本資料型別分析程式設計師JavaScript資料型別
- 好程式設計師大資料學習路線分享Hbase指令學習程式設計師大資料
- 好程式設計師Java學習路線分享Java中的位移運算程式設計師Java
- 好程式設計師web前端培訓分享FormData 簡單介紹程式設計師Web前端ORM
- 好程式設計師Java培訓分享Java程式設計技巧程式設計師Java
- 好程式設計師Java培訓分享學Java程式設計要注意什麼程式設計師Java
- 好程式設計師大資料教程分享HDFS常用shell和web介面介紹程式設計師大資料Web
- 好程式設計師Java學習路線分享三大特性之多型程式設計師Java多型
- 好程式設計師Java學習路線分享多執行緒概念程式設計師Java執行緒
- 好程式設計師Java學習路線分享MySQL目錄結構程式設計師JavaMySql
- 好程式設計師Java教程分享Java之設計模式程式設計師Java設計模式
- 好程式設計師Java培訓分享Java程式設計師技能提升指南程式設計師Java
- 好程式設計師大資料學習路線Hadoop學習乾貨分享程式設計師大資料Hadoop
- 好程式設計師大資料學習路線分享HDFS學習總結程式設計師大資料
- 好程式設計師大資料學習路線分享hdfs學習乾貨程式設計師大資料