1.使用消息隊(duì)列
幾種模式
從最簡(jiǎn)單的開始
添加完新的虛擬機(jī)可以看到,當(dāng)前admin用戶的主機(jī)訪問權(quán)限中新增的剛添加的環(huán)境
1.1查看交換機(jī)
交換機(jī)列表中自動(dòng)新增了剛創(chuàng)建好的虛擬主機(jī)相關(guān)的預(yù)設(shè)交換機(jī)。一共7個(gè)。前面兩個(gè) direct類型的交換機(jī),一個(gè)是(AMQP default)還有一個(gè)是amq.direct,它們都是直連式的交換機(jī)。
先看第一個(gè)交換機(jī):
第一個(gè)交換機(jī)是所有虛擬主機(jī)都會(huì)自帶的一個(gè)默認(rèn)交換機(jī),并且此交換機(jī)不可刪除,此交換機(jī)默認(rèn)綁定到所有的消息隊(duì)列,如果是通過默認(rèn)交換機(jī)發(fā)送消息,那么會(huì)根據(jù)消息的 routingkey(相當(dāng)于網(wǎng)絡(luò)中的ip) (之后我們發(fā)消息都會(huì)指定)決定發(fā)送給哪個(gè)同名的消息隊(duì)列,同時(shí)也不能顯示地將消息隊(duì)列綁定或解綁到此交換機(jī)。
我們可以看到,詳細(xì)信息中,當(dāng)前交換機(jī)特性是持久化(druable:true)的,也就是說就算機(jī)器重啟,那么此交換機(jī)也會(huì)保留,如果不是持久化,那么旦重啟就會(huì)消失。實(shí)際上我們?cè)诹斜碇锌吹?D 的字樣,就表示此交換機(jī)是持久化的,包含一會(huì)我們要講解的消息隊(duì)列列表也是這樣,所有自動(dòng)生成的交換機(jī)都是持久化的。
然后查看第二個(gè)交換機(jī),這個(gè)交換機(jī)是一個(gè)普通的直連交換機(jī):
這個(gè)交換機(jī)和我們剛剛介紹的默認(rèn)交換機(jī)類型一致,并且也是持久化的,但是我們可以看到它是具有綁定關(guān)系的,如果沒有指定的消息隊(duì)列綁定到此交換機(jī)上,那么這個(gè)交換機(jī)無法正常將信息存放到指定的消息隊(duì)列中,也是根據(jù) routingkey 尋找消息隊(duì)列(但是可以自定義)
1.2 查看消息隊(duì)列
1.2.1 創(chuàng)建隊(duì)列
可以看到下方圖中沒有任何的消息隊(duì)列,可以嘗試在下方添加一個(gè)新的消息隊(duì)列
第一行,選擇剛剛創(chuàng)建好的虛擬主機(jī),在這個(gè)虛擬主機(jī)下創(chuàng)建此消息隊(duì)列,接著我們將其類型定義為 CLassic 類型,也就是經(jīng)典類型(其他類型我們會(huì)在后面逐步介紹)名稱隨便起一個(gè),然后持久化我們選擇 Transient 暫時(shí)的(當(dāng)然也可以持久化,看你自己)自動(dòng)刪除我們選擇 No需要至少有一個(gè)消費(fèi)者連接到這個(gè)隊(duì)列,之后,一旦所有與這個(gè)隊(duì)列連接的消費(fèi)者都斷開時(shí),就會(huì)自動(dòng)刪除此隊(duì)列)最下面的參數(shù)我們暫時(shí)不進(jìn)行任何設(shè)置 (之后會(huì)用到)
創(chuàng)建好的隊(duì)列
點(diǎn)擊隊(duì)列名稱可查看詳細(xì)信息,詳細(xì)信息包括隊(duì)列的當(dāng)前負(fù)載狀態(tài)、屬性、消息隊(duì)列占用的內(nèi)存、消息數(shù)量等。
1.2.2 創(chuàng)建的隊(duì)列綁定交換機(jī)
然后將當(dāng)前消息隊(duì)列綁定到上邊的第二個(gè)直連交換機(jī)
,這樣就可以通過此交換機(jī)向此消息隊(duì)列發(fā)送信息了 (即給第二個(gè)交換機(jī)(amp.direct)發(fā)送消息,由它將消息給到y(tǒng)yds隊(duì)列中:
綁定之后
1.2.3 模擬發(fā)送消息
再次點(diǎn)擊yyds名稱,發(fā)現(xiàn)隊(duì)列多了一條數(shù)據(jù)
1.2.4 在消息隊(duì)列這邊直接獲取隊(duì)列的消息
找到下方的get message選項(xiàng):
可以看到三個(gè)選項(xiàng),首先是Ack Mode,這個(gè)是應(yīng)答模式選擇,共有四個(gè)選項(xiàng)
Nack message requeue true: 拒絕消息,也就是說不會(huì)將消息從消息隊(duì)列取出,并且重新排隊(duì),一次可以拒絕多個(gè)消息。
Ack message requeue false: 確認(rèn)應(yīng)答,確認(rèn)后消息會(huì)從消息隊(duì)列中移除,一次可以確認(rèn)多個(gè)消息。
Reject message requeue true/false: 也是拒絕此消息,但是可以指定是否重新排隊(duì)。
可以查看取出的消息
此時(shí)消息隊(duì)列還有一條消息
嘗試使用第二個(gè)選項(xiàng),然后點(diǎn)擊get message
發(fā)現(xiàn)隊(duì)列沒有消息了
1.2.5 再去第一個(gè)默認(rèn)交換機(jī)嘗試發(fā)送消息
routing key 改為yyds進(jìn)行發(fā)布
發(fā)布成功
進(jìn)入消息隊(duì)列查看消息
因此第一個(gè)交換機(jī)和第二個(gè)交互機(jī)發(fā)布消息時(shí)的區(qū)別:第一個(gè)交換機(jī)是根據(jù)隊(duì)列的名稱判斷的,第二個(gè)交換機(jī)是根據(jù)隊(duì)列指定的routing key判斷的
點(diǎn)擊名稱進(jìn)入詳情查看routing key文章來源:http://www.zghlxwxcb.cn/news/detail-724987.html
1.2.6 刪除或情況隊(duì)列
點(diǎn)擊隊(duì)列名稱進(jìn)行詳情文章來源地址http://www.zghlxwxcb.cn/news/detail-724987.html
到了這里,關(guān)于RabbitMQ-網(wǎng)頁使用消息隊(duì)列的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!