啟動指令:
service rabbitmq-server start
重新開機指令:
service rabbitmq-server restart
停止指令:
service rabbitmq-server stop
RabbitMq的安裝
erlang 與 rabbitmq 正确的版本比對 https://www.rabbitmq.com/which-erlang.html
線上安裝
安裝rabbitmq需要先安裝Erlang。
下載下傳erlang rpm包:
wget http://packages.erlang-solutions.com/erlang/rpm/centos/6/x86_64/erlang-22.0.4-1.el6.x86_64.rpm
下載下傳socat rpm包:
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/socat-1.7.3.2-2.el7.x86_64.rpm
下載下傳rabbitmq rpm包:
wget --content-disposition https://packagecloud.io/rabbitmq/rabbitmq-server/packages/el/6/rabbitmq-server-3.7.15-1.el6.noarch.rpm/download.rpm
安裝rpm包:
# 安裝RabbitMq:
rpm -ivh erlang-22.0.4-1.el6.x86_64.rpm --force --nodeps
rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm --force --nodeps
rpm -ivh rabbitmq-server-3.7.15-1.el6.noarch.rpm --force --nodeps
檢查是否安裝成功
檢視erlang版本:
[root@JR-JDH-UATAPP1 ~]erl -version
Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 10.4.3
檢視Rabbitmq版本:
[root@JR-JDH-UATAPP1 ~]# sudo rabbitmqctl status | grep rabbit
Status of node rabbit@JR-JDH-UATAPP1 ...
[{rabbitmq_tracing,"RabbitMQ message logging / tracing","3.7.15"},
{rabbitmq_management,"RabbitMQ Management Console","3.7.15"},
{rabbitmq_management_agent,"RabbitMQ Management Agent","3.7.15"},
{rabbitmq_web_dispatch,"RabbitMQ Web Dispatcher","3.7.15"},
{rabbit,"RabbitMQ","3.7.15"},
{rabbit_common,
"Modules shared by rabbitmq-server and rabbitmq-erlang-client",
檢查erlang是否運作正常:
[root@JR-JDH-UATAPP1 ~]# erl
Erlang/OTP 22 [erts-10.4.3] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [hipe]
Eshell V10.4.3 (abort with ^G)
1>
檢查Rabbitmq是否運作正常:
[root@tcljr-jdh-yc01 ~]# systemctl status rabbitmq-server
● rabbitmq-server.service - LSB: RabbitMQ is a multi-protocol messaging broker
Loaded: loaded (/etc/rc.d/init.d/rabbitmq-server; bad; vendor preset: disabled)
Active: active (running) since Wed 2021-07-21 11:31:09 CST; 23h ago
檢視安裝路徑:
[root@JR-JDH-UATAPP1 ~]# whereis erlang
erlang: /usr/lib64/erlang
[root@JR-JDH-UATAPP1 ~]# whereis rabbitmq
rabbitmq: /etc/rabbitmq /usr/lib/rabbitmq
常用指令
# 運作
systemctl start rabbitmq-server
# 重新開機
systemctl restart rabbitmq-server
# 停止
systemctl stop rabbitmq-server
# 開機自啟
systemctl enable rabbitmq-server
# 檢查狀态
systemctl status rabbitmq-server
# 檢視所有使用者
rabbitmqctl list_users
# 建立使用者
rabbitmqctl add_user 使用者名 密碼
# 将使用者給于權限(none、management、policymaker、monitoring、administrator):
rabbitmqctl set_user_tags 使用者名 角色
# 檢視目前使用者所有的權限
rabbitmqctl list_user_permissions 使用者名
# 賦予使用者權限(vhost configure write read)
rabbitmqctl set_permissions -p / 使用者名 ".*" ".*" ".*"
Setting permissions for user "guest" in vhost "/" ...
Error:
Virtual host / does not exist
# 報錯"Virtual host / does not exist",需要添加虛拟主機:rabbitmqctl add_vhost /
# 然後再重新賦予權限:rabbitmqctl set_permissions -p / 使用者名 ".*" ".*" ".*"
# 删除使用者 rabbitmqctl delete_user 使用者名
開啟web管理接口
啟動RabbitMQ Web管理控制台:
rabbitmq-plugins enable rabbitmq_management
打開浏覽通路:
http://ip:15672
第一次通路需要登入,預設的賬号密碼為:guest/guest,會遇到如下圖問題:User can only log in via localhost
預設情況下,Rabbitmq對guest這個賬戶做了限制,預設隻能通過本地網絡(如localhost)通路,遠端網絡通路受限,使用預設的使用者 guest / guest (此也為管理者使用者)登陸,隻能登陸localhost:15672。
是以在實作生産和消費消息之前,需要另外添加一個使用者,并設定相應的通路權限:
rabbitmqctl add_user 使用者名 密碼
設定該使用者為管理者角色:
rabbitmqctl set_user_tags 使用者名 administrator
為該使用者設定所有權限:
rabbitmqctl set_permissions -p / root ".*" ".*" ".*"
我們通過該使用者就可以通路了。
另外,如果想要使用guest賬号登入,必須解除Rabbitmq對guest賬号的限制:
找到rabbit.app這個檔案
[root@JR-JDH-UATAPP1 ~]# find / -name rabbit.app
/usr/lib/rabbitmq/lib/rabbitmq_server-3.7.15/ebin/rabbit.app
修改這個檔案:
vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.7.15/ebin/rabbit.app
将:{loopback_users, [<<”guest”>>]} 改為:{loopback_users, []},
原因:rabbitmq從3.3.0開始禁止使用guest/guest權限通過除localhost外的通路。
重新開機服務:
systemctl restart rabbitmq-server.service
這樣就可以以guest賬号登入了。
管理界面介紹
首頁
- Overview:概覽資訊,包括總計、全局計數、節點、端口和上下文等資訊;
- connections:無論生産者還是消費者,都需要與RabbitMQ建立連接配接後才可以完成消息的生産和消費,在這裡可以檢視連接配接情況;
- channels:通道,建立連接配接後,會形成通道,消息的投遞擷取依賴通道;
- Exchanges:交換機,用來實作消息的路由;
- Queues:隊列,即消息隊列,消息存放在隊列中,等待消費,消費後被移除隊列;
Overview
Total
- Ready:待消費的消息總數;
- Unacked:待應答的消息總數
- Total:總數 Ready+Unacked;
Global counts
- Connections:client的tcp連接配接的總數;
- Channels:通道的總數;
- Exchange:交換器的總數;
- Queues:隊列的總數;
- Consumers:消費者的總數;
Nodes
- Name:broker名稱;
- File descriptors:broker打開的檔案描述符和限制;
- Socket descriptors:broker管理的網絡套接字數量和限制,當限制被耗盡時,将停止接受新的網絡連接配接;
- Erlang processes:erlang啟動的程序數;
- Memory:目前broker占用的記憶體;
- Disk space:目前broker占用的硬碟;
- Uptime:目前broker持續運作的時長;
Connections
- Virtual host:所屬的虛拟主機;
- Name:名稱;
- User name:使用的使用者名;
- State:目前的狀态,running:運作中;idle:空閑;
- SSL/TLS:是否使用ssl進行連接配接;
- Protocol:使用的協定;
- Channels:建立的channel的總數;
- From client:每秒發出的資料包;
- To client:每秒收到的資料包;
Channels
- channel:名稱;
- Virtual host:所屬的虛拟主機;
- User name:使用的使用者名;
- Mode:管道保證模式。 可以是以下之一,或者不是:C: confirm。T:transactional(事務);
- State :目前的狀态,running:運作中;idle:空閑;
- Unconfirmed:待confirm的消息總數;
- Prefetch:設定的prefetch的個數;
- Unacker:待ack的消息總數;
- publish:producter pub消息的速率;
- confirm:producter confirm消息的速率;
- deliver/get:consumer 擷取消息的速率;
- ack:consumer ack消息的速率;
Exchanges
- Virtual host:所屬的虛拟主機;
- Name:名稱;
- Type:exchange type;
- Features:功能。 可以是以下之一,或者不是:D: 持久化。T:Internal,存在改功能表示這個exchange不可以被client用來推送消息,僅用來進行exchange和exchange之間的綁定,否則可以推送消息也可以綁定。
- Message rate in:消息進入的速率。
- Message rate out:消息出去的速率。
Queues
- Virtual host:所屬的虛拟主機;
- Name:名稱;
- Features:功能。 可以是以下之一,或者不是:D: 持久化;
- State:目前的狀态,running:運作中;idle:空閑;
- Ready:待消費的消息總數;
- Unacked:待應答的消息總數;
- Total:總數 Ready+Unacked;
- incoming:消息進入的速率;
- deliver/get:消息擷取的速率;
- ack:消息應答的速率;
配置RabbitMq
關于RabbitMq的配置,可以下載下傳RabbitMq的配置檔案模闆到rabbitmq.config,然後按需更改即可。
具體配置資訊參考官網:http://rabbitmq.com/configure.html
開放端口
/sbin/iptables -I INPUT -p tcp —dport 5672 -j ACCEPT
/sbin/iptables -I INPUT -p tcp —dport 15672 -j ACCEPT
解除安裝
1、解除安裝前先停止rabbitmq服務
/usr/lib/rabbitmq/bin/rabbitmqctl stop
檢視rabbitmq安裝的相關清單
yum list | grep rabbitmq
解除安裝rabbitmq已安裝的相關内容
yum -y remove rabbitmq-server.noarch
2、解除安裝erlang
檢視erlang安裝的相關清單
yum list | grep erlang
yum -y remove erlang-*
yum remove erlang.x86_64
rm -rf /usr/lib64/erlang
rm -rf /usr/lib/rabbitmq
rm -rf /usr/local/erlang
rm -rf /usr/local/rabbitmq