1. 消息隊列(Message queue)
消息隊列是在消息傳遞過程中保存消息的容器,通過消息隊列可以使用消息將應(yīng)用程序連接起來。這些消息通過像RabbitMQ這樣的消息代理服務(wù)器在應(yīng)用程序之間路由。
運用消息隊列的好處:
- 解耦、易于擴展
- 數(shù)據(jù)冗余、可恢復(fù)
- 保證順序
- 削峰、異步通信
2. 高級消息隊列協(xié)議(Advanced Message Queuing Protocol)
一個提供統(tǒng)一消息服務(wù)的應(yīng)用層標準高級消息隊列協(xié)議,是應(yīng)用層協(xié)議的一個開放標準,為面向消息的中間件設(shè)計。
3. RabbitMQ
RabbitMQ 是采用Erlang 語言實現(xiàn)AMQP的開源消息代理軟件(亦稱面向消息的中間件),它最初起源于金融系統(tǒng),用于在分布式系統(tǒng)中存儲轉(zhuǎn)發(fā)消息。
RabbitMQ特點:
- 可靠性:持久化、發(fā)送確認、消費確認等機制
- 高可用:集群、鏡像
- 支持多種協(xié)議:AMQP、STOMP(面向消息的簡單文本協(xié)議)、MQTT(消息隊列遙測傳輸)
- 多語言
- 管理界面
- 插件機制
4. RabbitMQ安裝配置
RabbitMQ3.8.3+Erlang22.3百度網(wǎng)盤下載地址,提取碼:68pq
- 安裝Erlang類庫
yum -y install ncurses-devel
yum -y install openssl-devel
yum -y install unixODBC-devel
yum -y install gcc-c++
yum -y install unixODBC unixODBC-devel wxBase wxGTK SDL wxGTK-gl
- 安裝Erlang
rpm -ivh esl-erlang_22.3.2-1_centos_7_amd64.rpm
# 驗證命令
erl
- 安裝RabbitMQ
yum -y install rabbitmq-server-3.8.3-1.el7.noarch.rpm
- 啟動、停止、查看狀態(tài)
systemctl start/stop/status/restart rabbitmq-server.service
- 注冊為開機啟動
systemctl enable rabbitmq-server
systemctl disable rabbitmq-server
- 安裝界面插件
rabbitmq-plugins enable rabbitmq_management
- 開放guest外部訪問
vim /etc/rabbitmq/rabbitmq.config
[{rabbit, [{loopback_users, []}]}].
登錄界面管理:http://IP:15672/
這里需要把5672/15672端口防火墻開放,如果用阿里云服務(wù)器,記得設(shè)置開放端口安全組

-
日志文件/var/log/rabbitmq/
rabbit@{hostname}.log:輸出rabbitmq運行相關(guān)的信息,如網(wǎng)絡(luò)流量、用戶、交換器、隊列等信息
rabbit@{hostname}-sasl.log:Erlang運行相關(guān)信息 卸載RabbitMQ
yum -y remove rabbitmq-server.noarch
# 查找相關(guān)目錄刪除如
rm -rf /usr/lib64/erlang
rm -rf /var/lib/rabbitmq
rm -rf /usr/lib/rabbitmq/lib/rabbitmq_server-3.8.3/
rm -rf /etc/rabbitmq/
rm -rf /var/log/rabbitmq
5. RabbitMQ相關(guān)命令
- 查看用戶、添加用戶、設(shè)置角色、修改密碼、刪除用戶
rabbitmqctl list_users
rabbitmqctl add_user fzb fzb2019
rabbitmqctl set_user_tags fzb administrator
rabbitmqctl change_password fzb fzb2020
rabbitmqctl delete_user fzb
-
五類角色
- 超級管理員(administrator):可登陸管理控制臺(啟用management plugin的情況下),可查看所有的信息,并且可以對用戶,策略(policy)進行操作。
- 監(jiān)控者(monitoring):可登陸管理控制臺(啟用management plugin的情況下),同時可以查看rabbitmq節(jié)點的相關(guān)信息(進程數(shù),內(nèi)存使用情況,磁盤使用情況等)。
- 策略制定者(policymaker):可登陸管理控制臺(啟用management plugin的情況下), 同時可以對policy進行管理。但無法查看節(jié)點的相關(guān)信息(上圖紅框標識的部分)。
- 普通管理者(management):僅可登陸管理控制臺(啟用management plugin的情況下),無法看到節(jié)點信息,也無法對策略進行管理。
- 其他:無法登陸管理控制臺,通常就是普通的生產(chǎn)者和消費者。
賦予用戶vhost權(quán)限
rabbitmqctl set_permissions -p / \fzb ".*" ".*" ".*"
p / :賦予默認虛擬機權(quán)限
\fzb:被賦予權(quán)限用戶
".*" ".*" ".*":分別映射配置、寫、讀
".*" "checks-.*" "":匹配任何隊列和交換器、只匹配名字已checks-開頭的隊列和交換器、不匹配隊列和交換器
讀:有關(guān)消費消息的任何操作
寫:發(fā)布消息
配置:隊列和交換器的創(chuàng)建和刪除
- 查看所有用戶權(quán)限、查看指定用戶權(quán)限、清除權(quán)限
rabbitmqctl list_permissions
rabbitmqctl list_user_permissions fzb
rabbitmqctl clear_permissions -p / fzb
- 查看vhost、創(chuàng)建vhost、刪除vhost
rabbitmqctl list_vhosts
rabbitmqctl add_vhost vhost_fzb
rabbitmqctl list_queues -p vhost_fzb
vhost是運行在rabbit中的虛擬主機,有一個默認的虛擬主機“/”,vhost是rabbitmq分配權(quán)限的最小細粒度。
一個rabbitmq服務(wù)器上可以運行多個vhost,以便于適用不同的業(yè)務(wù)需要,這樣做既可以滿足權(quán)限配置的要求,也可以避免不同業(yè)務(wù)之間隊列、交換機的命名沖突問題,因為不同vhost之間是隔離的。
- 查看隊列名字、消息數(shù)目、消費者數(shù)目、內(nèi)存、屬性
rabbitmqctl list_queues -p vhost_fzb name messages consumers memory durable auto_delete
- 查看交換器名字、類型、屬性
rabbitmqctl list_exchanges name type durable auto_delete
- 查看綁定(該命令不接受-p之外的命令)
rabbitmqctl list_bindings -p vhost_fzb
每一個不曾起舞的日子都是對生命的辜負