RabbitMQ(一):简介和基本概念
一、簡介
RabbitMQ是一個消息代理,可以將其視為郵局,它接受和轉(zhuǎn)發(fā)消息。
RabbitMQ和郵局之間的主要區(qū)別在于它不處理紙張,而是接受、存儲、轉(zhuǎn)發(fā)二進(jìn)制blob數(shù)據(jù) - 消息。
二、隊列
隊列是RabbitMQ中的郵箱的名稱。
消息流經(jīng)RabbitMQ和應(yīng)用程序,但它們只能存儲在隊列中。
隊列僅由主機(jī)的存儲器&磁盤限制約束,它本質(zhì)上是一個大的消息緩沖器。
許多生產(chǎn)者可以發(fā)送到一個隊列的消息,并且許多消費(fèi)者可以嘗試從一個隊列接收數(shù)據(jù)。
三、基本概念
-
ConnectionFactory(連接工廠): 生產(chǎn)Connection的的工廠
-
Connection(連接):是RabbitMQ的socket的長鏈接,它封裝了socket協(xié)議相關(guān)部分邏輯
-
Channel(頻道|信道): 是建立在Connection連接之上的一種輕量級的連接,我們大部分的業(yè)務(wù)操作是在Channel這個接口中完成的,(如果把Connection比作一條光纖電纜的話,那么Channel信道就比作成光纖電纜中的其中一束光纖。一個Connection上可以創(chuàng)建任意數(shù)量的Channel)
- 聲明隊列:queueDeclare、
- 聲明交換機(jī):exchangeDeclare、
- 隊列的綁定:queueBind、
- 消息的發(fā)布:basicPublish、
- 消息的消費(fèi):basicConsume等。
-
Producer(生產(chǎn)者):生產(chǎn)消息
-
Consumer(消費(fèi)者):消費(fèi)消息Exchange(交換機(jī)):生產(chǎn)者會將消息發(fā)送到交換機(jī),然后交換機(jī)通過路由策略(規(guī)則)將消息路由到匹配的隊列中去
- 消費(fèi)者只需關(guān)注隊列即可,不需要關(guān)注交換機(jī)和路由鍵,
- 消費(fèi)者可以通過basicConsume(訂閱模式可以從隊列中一直持續(xù)的自動的接收消息)
- 或者basicGet(先訂閱消息,然后獲取單條消息,再然后取消訂閱,也就是說basicGet一次只能獲取一條消息,如果還想再獲取下一條還要再次調(diào)用basicGet)來從隊列中獲取消息
-
Routing Key(路由鍵):一個String值,用于定義路由規(guī)則,Queue(隊列):用于存儲消息的容器,可以看成一個有序的數(shù)組,生產(chǎn)者生產(chǎn)的消息會發(fā)送到交換機(jī)中,最終交換機(jī)將消息存儲到某個或某些隊列中,(消息的持久化是將消息寫入rabbitMQ自帶的數(shù)據(jù)庫中)。
- 在隊列綁定的時候需要指定路由鍵,
- 在生產(chǎn)者發(fā)布消息的時候需要指定路由鍵,
- 在消費(fèi)的時候只需關(guān)注隊列即可,不需要關(guān)注交換機(jī)和路由鍵(不理解)(消費(fèi)前必須指定指定隊列,聲明)
- 在消息確認(rèn)機(jī)制中,自動回復(fù)隊列應(yīng)答時需要(待定)
- 當(dāng)消息的路由鍵和隊列綁定的路由鍵匹配時,消息就會發(fā)送到該隊列(條件)。
-
Binding(綁定): Binding并不是一個概念,而是一種操作,(RabbitMQ中通過綁定,以路由鍵作為橋梁將Exchange與Queue關(guān)聯(lián)起來,這樣RabbitMQ就知道如何正確地將消息路由到指定的隊列了)
- (Exchange—>Routing Key—>Queue),通過queueBind方法將Exchange、Routing Key、Queue綁定起來
-
vhost(虛擬主機(jī)): RabbitMQ 通過虛擬主機(jī)(virtual host)來分發(fā)消息,
- 擁有自己獨(dú)立的權(quán)限控制,不同的vhost之間是隔離的,單獨(dú)的。
- vhost是權(quán)限控制的基本單位,用戶只能訪問與之綁定的vhost,默認(rèn)vhost:”/” ,默認(rèn)用戶”guest” 密碼“guest”,來訪問默認(rèn)的vhost。
四、理解
下圖說明了生產(chǎn)者將消息發(fā)送到交換機(jī)中,然后又路由到指定的隊列中?
?
轉(zhuǎn)載于:https://www.cnblogs.com/zhxb/p/9370022.html
總結(jié)
以上是生活随笔為你收集整理的RabbitMQ(一):简介和基本概念的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Lucene 02 - Lucene的入
- 下一篇: 命令执行顺序控制与管道