RabbitMQ学习系列(一): 介绍
1、介紹
RabbitMQ是一個(gè)由erlang開(kāi)發(fā)的基于AMQP(Advanced Message Queue )協(xié)議的開(kāi)源實(shí)現(xiàn)。用于在分布式系統(tǒng)中存儲(chǔ)轉(zhuǎn)發(fā)消息,在易用性、擴(kuò)展性、高可用性等方面都非常的優(yōu)秀。是當(dāng)前最主流的消息中間件之一。
RabbitMQ的官網(wǎng):http://www.rabbitmq.com
2、AMQP
AMQP,是應(yīng)用層協(xié)議的一個(gè)開(kāi)放標(biāo)準(zhǔn),為面向消息的中間件設(shè)計(jì)。消息中間件主要用于組件之間的解耦,消息的發(fā)送者無(wú)需知道消息使用者的存在,同樣,消息使用者也不用知道發(fā)送者的存在。AMQP的主要特征是面向消息、隊(duì)列、路由(包括點(diǎn)對(duì)點(diǎn)和發(fā)布/訂閱)、可靠性、安全。
3、系統(tǒng)架構(gòu)
消息隊(duì)列的使用過(guò)程大概如下:
(1)客戶端連接到消息隊(duì)列服務(wù)器,打開(kāi)一個(gè)channel。
(2)客戶端聲明一個(gè)exchange,并設(shè)置相關(guān)屬性。
(3)客戶端聲明一個(gè)queue,并設(shè)置相關(guān)屬性。
(4)客戶端使用routing key,在exchange和queue之間建立好綁定關(guān)系。
(5) 客戶端投遞消息到exchange。exchange接收到消息后,就根據(jù)消息的key和已經(jīng)設(shè)置的binding,進(jìn)行消息路由,將消息投遞到一個(gè)或多個(gè)隊(duì)列里。
如下圖所示:AMQP 里主要要說(shuō)兩個(gè)組件:Exchange 和 Queue
綠色的 X 就是 Exchange ,紅色的是 Queue ,這兩者都在 Server 端,又稱作 Broker ,
這部分是 RabbitMQ 實(shí)現(xiàn)的,而藍(lán)色的則是客戶端,通常有 Producer 和 Consumer 兩種類(lèi)型。
4、幾個(gè)概念
P: 為Producer,數(shù)據(jù)的發(fā)送方。
C:為Consumer,數(shù)據(jù)的接收方。
Exchange:消息交換機(jī),它指定消息按什么規(guī)則,路由到哪個(gè)隊(duì)列。
Queue:消息隊(duì)列載體,每個(gè)消息都會(huì)被投入到一個(gè)或多個(gè)隊(duì)列。
Binding:綁定,它的作用就是把exchange和queue按照路由規(guī)則綁定起來(lái)。
Routing Key:路由關(guān)鍵字,exchange根據(jù)這個(gè)關(guān)鍵字進(jìn)行消息投遞。
vhost:虛擬主機(jī),一個(gè)broker里可以開(kāi)設(shè)多個(gè)vhost,用作不同用戶的權(quán)限分離。
channel:消息通道,在客戶端的每個(gè)連接里,可建立多個(gè)channel,每個(gè)channel代表一個(gè)會(huì)話任務(wù)。
轉(zhuǎn)載自http://www.cnblogs.com/zhangweizhong/category/855479.html,謝謝
轉(zhuǎn)載于:https://www.cnblogs.com/Paul-watermelon/p/11228278.html
總結(jié)
以上是生活随笔為你收集整理的RabbitMQ学习系列(一): 介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Go-如何读取yaml,json,ini
- 下一篇: RabbitMQ学习系列(二): Rab