RabbitMQ官方最新版,由 LShift 提供的一個 Advanced Message Queuing Protocol (AMQP) 的開源實(shí)現(xiàn),由以高性能、健壯以及可伸縮性出名的 Erlang 寫成,因此也是繼承了這些優(yōu)點(diǎn)。
RabbitMQ詳細(xì)介紹
RabbitMQ 是由 LShift 提供的一個 Advanced Message Queuing Protocol (AMQP) 的開源實(shí)現(xiàn),由以高性能、健壯以及可伸縮性出名的 Erlang 寫成,因此也是繼承了這些優(yōu)點(diǎn)。
AMQP 里主要要說兩個組件:Exchange 和 Queue (在 AMQP 1.0 里還會有變動),如下圖所示,綠色的 X 就是 Exchange ,紅色的是 Queue ,這兩者都在 Server 端,又稱作 Broker ,這部分是 RabbitMQ 實(shí)現(xiàn)的,而藍(lán)色的則是客戶端,通常有 Producer 和 Consumer 兩種類型:
RabbitMQ使用教程
1.下載并安裝
2.開啟web頁面管理工具。
lubby@ubuntu:/usr/bin$ rabbitmq-plugins enable rabbitmq_management
這個時(shí)候能在安裝的機(jī)器上面通過頁面http://localhost:15672 使用默認(rèn)賬戶guest密碼guest來管理。
3.創(chuàng)建vhost
lubby@ubuntu:/usr/bin$ sudo rabbitmqctl add_vhost finance
二、創(chuàng)建用戶分配權(quán)限
如果想要在其他機(jī)器上面也能登錄rabbitmq manager頁面需要創(chuàng)建賬號,并且分配權(quán)限。
1.創(chuàng)建用戶
lubby@ubuntu:/usr/bin$ sudo rabbitmqctl add_user admin 123456
2.賦予賬戶角色
lubby@ubuntu:/usr/bin$ sudo rabbitmqctl set_user_tags admin administrator
3.賦予用戶權(quán)限
lubby@ubuntu:/usr/bin$ sudo rabbitmqctl set_permissions -p finance admin '.*' '.*' '.*'
RabbitMQ分別和生產(chǎn)者,消費(fèi)者建立TCP鏈接,一個TCP鏈接會被多個channel復(fù)用,這樣就可以減少RabbitMQ服務(wù)器和連接者的TCP的建立。畢竟TCP鏈接的建立和銷毀很消耗性能。
RabbitMQ中分為exchange,routingkey, queue三個概念。exchange是負(fù)責(zé)把生產(chǎn)者的消息發(fā)給綁定的queue;queue就是存放消息的隊(duì)列,消費(fèi)者從queue中取數(shù)據(jù);routingkey是exchange和queue綁定名稱,routingkey是標(biāo)記exchange該把消息轉(zhuǎn)發(fā)給哪些隊(duì)列。多個queue和exchange綁定的routingkey可以一樣。
exchange可以分為direct,fanout,topic,header.其中header基本上很少用到。
direct:消息發(fā)給exchange之后直接被轉(zhuǎn)發(fā)到所有與其綁定的queue。當(dāng)生產(chǎn)者發(fā)送的時(shí)候指定exchange和routingkey,消息會發(fā)給和指定exchange綁定且指定routingkey的queue。當(dāng)生產(chǎn)者直接發(fā)送給queue不指定exchange和routingkey則消息會通過默認(rèn)的direct exchange發(fā)送到queue。
fanout:這個就是類似廣播的交換器,生產(chǎn)者只需發(fā)送給fanout類型的exchange,則所有綁定了該exchange的queue都會收到一份消息,生產(chǎn)者發(fā)送的時(shí)候只需指定fanout類型的exchange即可。
topic:可以通過設(shè)置的routingkey帶有#或者*來進(jìn)行匹配。只要生產(chǎn)者指定了routingkey,那么exchange會匹配和queue綁定的routingkey來把消息傳遞給queue。
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版