本篇文章帶來(lái)的內(nèi)容是介紹RabbitMQ,讓大家了解一些RabbitMQ的相關(guān)知識(shí)。有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。
RabbitMQ概覽
RabbitMQ是一個(gè)高性能的分布式消息中間件。它由Erlang編寫(xiě),這種語(yǔ)言天生支持分布式,而且性能極高(但是比較難上手)。
通信概念
RabbitMQ簡(jiǎn)單理解就是一個(gè)隊(duì)列服務(wù),我們的生產(chǎn)者不斷地往它投遞消息,而消費(fèi)者不斷地從它那里獲取消息。但相較于利用redis的List這類簡(jiǎn)單隊(duì)列,RabbitMQ的消息投遞更靈活一點(diǎn)。首先需要知道一些RabbitMQ中的通信概念:
● exchange(交換器)
● queue(隊(duì)列):消息隊(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ī)):不同的vhost下,數(shù)據(jù)完全隔離,默認(rèn)vhost為“/”
● channel(信道):在一個(gè)tcp連接下,可建立多個(gè)channel,每個(gè)channel代表一個(gè)會(huì)話任務(wù)。
● producer(生產(chǎn)者)
● consumer(消費(fèi)者)
RabbitMQ中Exchange類似于一個(gè)路由器,我們的consumer并不會(huì)把消息直接投遞給隊(duì)列,而是投遞給exchange,exchange根據(jù)我們投遞時(shí)的路由鍵(routing key)再發(fā)送到特定的隊(duì)列。這樣的設(shè)計(jì)讓消息可以靈活選路,發(fā)送到某一類的隊(duì)列中,形成一對(duì)多的關(guān)系,而不僅僅是一對(duì)一。
Exchange
所以說(shuō)RabbitMQ中的exchange很方便,很強(qiáng)大,它有這樣幾種類型:
● direct
● fanout
● topic
● headers(幾乎用不到)
direct交換器很簡(jiǎn)單,有時(shí)候我們僅僅需要一個(gè)很簡(jiǎn)單的隊(duì)列(消息投遞到其中,然后不斷消費(fèi)它),這時(shí)候我們就可以用direct交換器,它的規(guī)則是:如果路由鍵匹配,消息就會(huì)被投遞到對(duì)應(yīng)的隊(duì)列。
新聞熱點(diǎn)
疑難解答