每個(gè)RabbitMQ服務(wù)器都能創(chuàng)建虛擬的消息服務(wù)器,我們稱(chēng)之為虛擬主機(jī)(vhost)每一個(gè)vhost本質(zhì)上是一個(gè)mini版的RabbitMQ服務(wù)器,擁有自己的隊(duì)列、交換器和綁定等等
歡迎訪(fǎng)問(wèn)本人博客:http://wangnan.tech
多租戶(hù)模式:虛擬主機(jī)和隔離
概述
- 每個(gè)RabbitMQ服務(wù)器都能創(chuàng)建虛擬的消息服務(wù)器,我們稱(chēng)之為虛擬主機(jī)(vhost)每一個(gè)vhost本質(zhì)上是一個(gè)mini版的RabbitMQ服務(wù)器,擁有自己的隊(duì)列、交換器和綁定等等
- 更重要的是,他擁有自己的權(quán)限機(jī)制,這使得你能夠安全地使用一個(gè)RabbitMQ服務(wù)器來(lái)服務(wù)眾多的應(yīng)用程序
- vhost就像是虛擬機(jī)之與物理服務(wù)器一樣:他們?cè)诟鱾€(gè)實(shí)例間提供邏輯上的分離,允許你為不同程序安全保密地運(yùn)行數(shù)據(jù),它既能將同一個(gè)Rabbit的眾多客戶(hù)區(qū)分開(kāi)來(lái),又可以避免隊(duì)列和交換器命名沖突
- vhost是AMQP概念的基礎(chǔ),你必須在連接時(shí)進(jìn)行指定
- RabbitMQ包含了一個(gè)開(kāi)箱即用的默認(rèn)vhost:"/",如果你不需要多個(gè)vhost,那么就使用默認(rèn)的吧,使用缺省的guest用戶(hù)名和密碼guest就可以訪(fǎng)問(wèn)默認(rèn)的vhost
- 當(dāng)你在RabbitMQ集群上創(chuàng)建vhost,整個(gè)集群上都會(huì)創(chuàng)建該vhost,vhost不僅消除了為基礎(chǔ)架構(gòu)中的每一層運(yùn)行一個(gè)RabbitMQ服務(wù)器的需要,同樣也避免了為每一層創(chuàng)建不同集群
如何創(chuàng)建vhost
vhost和權(quán)限控制非常獨(dú)特,他們是AMQP中唯一無(wú)法通過(guò)AMQP協(xié)議的基元(不同與隊(duì)列,交換器和綁定)
創(chuàng)建vhost
你需要通過(guò)RabbitMQ的安裝路徑下的./sbin/目錄中的rabbitmqctl工具來(lái)創(chuàng)建
運(yùn)行:
rabbitmqctl add_vhost[vhost_name]
可以創(chuàng)建一個(gè)vhost,其中[vhost_name]就是你想要?jiǎng)?chuàng)建的vhost
刪除vhost
rabbitmqctl delete_vhost[vhsost_name]
查看Rabbit服務(wù)器上運(yùn)行著那些vhost
rabbitmqctl list_vhost
你就會(huì)看到如下所示的內(nèi)容
$ ./sbin/rabbitmqctl list_vhosts
Listing vhosts ...
/
oak
sycamore
...done.
管理遠(yuǎn)程RabbitMQ節(jié)點(diǎn)
-n rabbit@[server_name]
rabbit表示Erlang應(yīng)用程序名稱(chēng)
[server_name]表示ip
(注:內(nèi)容整理自《RabbitMQ實(shí)戰(zhàn)》)