RabbitMQ概覽
RabbitMQ是一個高性能的分布式消息中間件。它由Erlang編寫,這種語言天生支持分布式,而且性能極高(但是比較難上手)。
通信概念
RabbitMQ簡單理解就是一個隊列服務(wù),我們的生產(chǎn)者不斷地往它投遞消息,而消費者不斷地從它那里獲取消息。但相較于利用redis的List這類簡單隊列,RabbitMQ的消息投遞更靈活一點。首先需要知道一些RabbitMQ中的通信概念:
● exchange(交換器)
● queue(隊列):消息隊列載體,每個消息都會被投入到一個或多個隊列。
● binding(綁定):它的作用就是把exchange和queue按照路由規(guī)則綁定起來。
● routing key(路由關(guān)鍵字):exchange根據(jù)這個關(guān)鍵字進(jìn)行消息投遞。
● vhost(html' target='_blank'>虛擬主機(jī)):不同的vhost下,數(shù)據(jù)完全隔離,默認(rèn)vhost為“/”
● channel(信道):在一個tcp連接下,可建立多個channel,每個channel代表一個會話任務(wù)。
● producer(生產(chǎn)者)
● consumer(消費者)
RabbitMQ中Exchange類似于一個路由器,我們的consumer并不會把消息直接投遞給隊列,而是投遞給exchange,exchange根據(jù)我們投遞時的路由鍵(routing key)再發(fā)送到特定的隊列。這樣的設(shè)計讓消息可以靈活選路,發(fā)送到某一類的隊列中,形成一對多的關(guān)系,而不僅僅是一對一。
Exchange
所以說RabbitMQ中的exchange很方便,很強大,它有這樣幾種類型:
● direct
● fanout
● topic
● headers(幾乎用不到)
direct交換器很簡單,有時候我們僅僅需要一個很簡單的隊列(消息投遞到其中,然后不斷消費它),這時候我們就可以用direct交換器,它的規(guī)則是:如果路由鍵匹配,消息就會被投遞到對應(yīng)的隊列。

fanout交換器忽略路由鍵,把消息同時發(fā)到一批隊列。

topic則就是根據(jù)不同路由鍵,把消息發(fā)送到某一類隊列中。

相關(guān)視頻教程推薦:《PHP教程》
以上就是本篇文章的全部內(nèi)容,希望能對大家的學(xué)習(xí)有所幫助。更多精彩內(nèi)容大家可以關(guān)注php 相關(guān)教程欄目?。?!
以上就是什么是RabbitMQ?RabbitMQ的簡單介紹的詳細(xì)內(nèi)容,PHP教程
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。
新聞熱點
疑難解答