【RabbitMQ】核心概念
讓我們從RabbitMQ官網的一段話開始:
RabbitMQ is the most widely deployed open source message broker.
簡言之,RabbitMQ是開源的訊息佇列。將A君的訊息,傳送給B君,不過這裡的B君,不單指某一個具體的例項,可能是一群例項
這篇文章來講一講RabbitMQ的幾個核心概念
- Producer
- Message
- Exchange
- Queue
- Consumer
概述
我們先看看幾個核心概念的關係,如下圖:
從上圖中可以看到:
- Producer將訊息傳送到Exchange
- Exchange根據Binding關係,將訊息送到0~n個Queue
- Consumer從Queue中得到訊息
下面詳細講解每個概念
Producer
首先來看看Producer(生產者),顧名思義,生產訊息的例項。需要注意的是:在程式碼實現上,並沒有Producer和Consumer抽象概念。Producer是指呼叫RabbitMQ API傳送訊息的例項,Consumer是指呼叫RabbitMQ API接收訊息的例項,僅僅是為了方便描述,或者可以說成,僅僅是邏輯上的概念
Producer、Message、Exchange三者之間的關係如下圖
即:
- 一個Producer可以向不同的Exchange傳送訊息
- 一個Producer可以向任何一個Exchange傳送多條訊息
Message
其次要講的是Message,Message Broker當然離不開Message,沒了Message,那就不是Message Broker了,只能是其他的什麼Broker。Message有多種格式,比如:
- text/plain
- application/json
- ……
Exchange
Exchange就是一個交易所,會有很多的Message進入到Exchange中,Exchange根據Binding key(或者叫Routing key)將Message分發到不同的Queue中
RabbitMQ中的Exchange有多種型別,型別不同,Message的分發機制不同,如下:
- fanout,廣播模式。這種型別的Exchange會將Message分發到繫結到該Exchange的所有Queue
- direct,這種型別的Exchange會根據Routing key(精確匹配)將Message分發到指定的Queue
- topic,這種型別的Exchange會根據Routing key(模糊匹配)將Message分發到指定的Queue
fanout
direct
topic
Queue
Queue,佇列,訊息暫時存放的地方
Consumer
Consumer,消費者,接收訊息的例項
相關文章
- RabbitMQ概念詳解MQ
- 核心概念
- RabbitMQ(1)---基本概念MQ
- ES 核心概念
- Redux 核心概念Redux
- Kubernetes核心概念
- RabbitMQ 入門之基礎概念MQ
- Webpack核心概念解析Web
- Hyperledger Fabric 核心概念
- RPC核心概念理解RPC
- Laravel核心概念剖析Laravel
- ECS的核心概念
- RabbitMQ必備核心知識MQ
- RabbitMq基礎教程之基本概念MQ
- Laravel中的核心概念Laravel
- Docker_02 核心概念Docker
- Spark 的核心概念 RDDSpark
- webpack(2)webpack核心概念Web
- laravel核心概念總結Laravel
- 1.RabbitMQ入門-概念、安裝、配置MQ
- webpack (1)——核心概念的理解Web
- vuex核心概念---action、getter、moduleVue
- Kubernetes概念及核心物件物件
- RabbitMQ核心元件及應用場景MQ元件
- 快速掌握RabbitMQ(一)——RabbitMQ的基本概念、安裝和C#驅動MQC#
- vuex 中的核心概念及原理Vue
- k8s——核心概念篇K8S
- Spring原始碼系列:核心概念解析Spring原始碼
- 物件導向思想的核心概念物件
- PixiJS核心概念及簡單上手JS
- ElasticSearch核心概念和文件的CRUDElasticsearch
- 30分鐘理解GraphQL核心概念
- 3.k8s核心概念K8S
- Web教程:7個CSS核心概念WebCSS
- 【譯】Apache Storm系列 之一(核心概念)ApacheORM
- 33 個 JavaScript 核心概念系列(四): == 與 ===JavaScript
- Docker教程之三Docker核心概念Docker
- JavaScript核心概念(1):型別轉換JavaScript型別