RabbitMQ是流行的開源消息隊列系統,是AMQP(Advanced Message Queuing Protocol高級消息隊列協議)的標准實現,用erlang語言開發。RabbitMQ據說具有良好的性能和時效性,同時還能夠非常好的支持集群和負載部署,非常適合在較大規模的分布式系統中使用,具體特性還在驗證中,待檢驗。由於項目需要,安裝並配置了RabbitMQ,服務器操作系統是CentOS7。
v基礎知識
什么是消息隊列(Message Queue)?
消息(Message)
網絡中的兩台計算機或者兩個通訊設備之間傳遞的數據。例如說:文本、音樂、視頻等內容。
隊列(Queue)
一種特殊的線性表(數據元素首尾相接),特殊之處在於只允許在首部刪除元素和在尾部追加元素。入隊、出隊。
消息隊列(MQ)
消息+隊列,保存消息的隊列。消息的傳輸過程中的容器;主要提供生產、消費接口供外部調用做數據的存儲和獲取。
MQ分類
MQ主要分為兩類:點對點(p2p)、發布訂閱(Pub/Sub)
共同點:
消息生產者生產消息發送到queue中,然后消息消費者從queue中讀取並且消費消息。
不同點:
p2p模型包括:消息隊列(Queue)、發送者(Sender)、接收者(Receiver)
一個生產者生產的消息只有一個消費者(Consumer)(即一旦被消費,消息就不在消息隊列中)。比如說打電話。
Pub/Sub包含:消息隊列(Queue)、主題(Topic)、發布者(Publisher)、訂閱者(Subscriber)。每個消息可以有多個消費者,彼此互不影響。比如我發布一個微博:關注我的人都能夠看到。
那么在大數據領域呢,為了滿足日益增長的數據量,也有一款可以滿足百萬級別消息的生成和消費,分布式、持久穩定的產品——RabbitMQ。
v安裝依賴項
RabbitMQ使用erlang語言開發,所以我們首先安裝erlang.
rpm -Uvh http://www.rabbitmq.com/releases/erlang/erlang-18.1-1.el7.centos.x86_64.rpm
RabbitMQ是基於erlang的,所以RabbitMQ和erlang版本要對應,要不然有可能安裝失敗。 RabbitMQ Erlang Version Requirements — RabbitMQ
vInstall RabbitMQ-Server
rpm -Uvh http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.6/rabbitmq-server-3.5.6-1.noarch.rpm
安裝好了之后,驗證是否安裝成功。rpm -qa|grep rabbitmq
啟動MQ:service rabbitmq-server start
重啟MQ:service rabbitmq-server restart
關閉MQ:service rabbitmq-server stop
查看狀態:rabbitmqctl status
v維護插件
先啟動MQ,然后安裝維護插件。rabbitmq-plugins enable rabbitmq_management
這個命令的作用是安裝RabbitMq的一個管理插件
查看安裝的插件rabbitmq-plugins list
安裝好了以后就可以通過在瀏覽器訪問 http://ip:15672進入一個管理界面。
v遠程訪問
這時候登錄會提示login failed
需要開啟遠程訪問授權。
cd /etc/rabbitmq
cp /usr/share/doc/rabbitmq-server-3.5.6/rabbitmq.config.example /etc/rabbitmq/
mv rabbitmq.config.example rabbitmq.config
vim /etc/rabbitmq/rabbitmq.config
在rabbitmq.config中添加 {loopback_users, []}
用戶名和密碼默認都是guest
,登錄后顯示如下:
關於RabbitMQ Management更多介紹,可以看看這里。 SpringBoot(二十三)集成RabbitMQ---淺談RabbitMQ Management
v用戶管理
新增一個用戶 rabbitmqctl add_user Username Password
設置admin rabbitmqctl set_user_tags Username administrator
用戶角色大致可分為五類,超級管理員, 監控者, 策略制定者, 普通管理者以及其他。
超級管理員(administrator):
可登陸管理控制台(啟用management plugin的情況下),可查看所有的信息,並且可以對用戶,策略(policy)進行操作。監控者(monitoring)
可登陸管理控制台(啟用management plugin的情況下),同時可以查看rabbitmq節點的相關信息(進程數,內存使用情況,磁盤使用情況等)策略制定者(policymaker)
可登陸管理控制台(啟用management plugin的情況下), 同時可以對policy進行管理。但無法查看節點的相關信息(上圖紅框標識的部分)。與administrator的對比,administrator能看到這些內容普通管理者(management)
僅可登陸管理控制台(啟用management plugin的情況下),無法看到節點信息,也無法對策略進行管理。其他
無法登陸管理控制台,通常就是普通的生產者和消費者。刪除一個用戶 rabbitmqctl delete_user Username
修改用戶的密碼 rabbitmqctl change_password Username Newpassword
查看當前用戶列表 rabbitmqctl list_users
其他參考資料:
- Installing on RPM-based Linux (RHEL, CentOS, Fedora, openSUSE) — RabbitMQ http://www.rabbitmq.com/install-rpm.html
- EPEL/FAQ - Fedora Project Wiki https://fedoraproject.org/wiki/EPEL/FAQ#howtouse
- News — RabbitMQ http://www.rabbitmq.com/news.html
作 者:請叫我頭頭哥
出 處:http://www.cnblogs.com/toutou/
關於作者:專注於基礎平台的項目開發。如有問題或建議,請多多賜教!
版權聲明:本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。
特此聲明:所有評論和私信都會在第一時間回復。也歡迎園子的大大們指正錯誤,共同進步。或者直接私信我
聲援博主:如果您覺得文章對您有幫助,可以點擊文章右下角【推薦】一下。您的鼓勵是作者堅持原創和持續寫作的最大動力!