一、安装rabbitmq
1、点击进入相关地址,官网地址、参考文档、linux8.x下载、linux7.x下载、这是3.8.14对应的erlang版本;
erlang和rabbitmq对应关系:https://www.rabbitmq.com/docs/which-erlang#erlang-repositories
TencentOS Server 3.1 (TK4),与 CentOS 8用户态完全兼容,配套基于社区5.4 LTS 内核深度优化的 tkernel4版本。
TencentOS Server 2.4(TK4),与 CentOS 7用户态完全兼容,配套基于社区5.4 LTS 内核深度优化的 tkernel4版本。
centos8对应的erlang,例如:https://packagecloud.io/rabbitmq/erlang/packages/el/8/erlang-26.2.3-1.el8.x86_64.rpm
各版本erlang对应下载rabbitmq的地址:https://packagecloud.io/rabbitmq/erlang
2、文件上传,上传到 /usr/local/software 目录下(如果没有 software需要自己创建)
3、安装文件(分别按照以下顺序安装)
# 根据实际下载的具体版本,执行以下命令,例如如下案例:
# centos7,命令
rpm -ivh erlang-21.3-1.el7.x86_64.rpm
# centos8,命令
rpm -ivh erlang-26.2.3-1.el8.x86_64rpm
yum install socat -y
# 根据实际下载的具体版本,执行以下命令,例如如下案例:
# centos7,命令
rpm -ivh rabbitmq-server-3.8.8-1.el7.noarch.rpm
# centos8,命令
rpm -ivh rabbitmq-server-3.12.1-1.el8.noarch.rpm
4、常用命令(按照以下顺序执行)
添加开机启动 RabbitMQ服务
chkconfig rabbitmq-server on
启动服务
/sbin/service rabbitmq-server start
查看服务状态
/sbin/service rabbitmq-server status
5、安装可视化管理插件
关闭服务
/sbin/service rabbitmq-server stop
开启web管理插件
rabbitmq-plugins enable rabbitmq_management
用默认账号密码(guest)访问地址 ip:15672/ 出现权限问题
6、添加一个新的用户(添加前记得要启动rabbitmq服务)
# 创建账号
rabbitmqctl add_user admin 123
# 设置用户角色
rabbitmqctl set_user_tags admin administrator
#设置权限
#set_permissions [-p <vhostpath>] <user> <conf> <write> <read>
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
# 查看当前用户和角色
rabbitmqctl list_users
注意:一定要给用户设置权限否则无法使用。
7、相关命令
# 查看rabbitmqctl帮助
rabbitmqctl --help
# 查看所有用户的权限
rabbitmqctl list_permissions
# 查看virtual host为/的所有用户权限
rabbitmqctl list_permissions -p /
# 查看指定用户的权限
rabbitmqctl list_user_permissions 用户名
# 清楚指定用户权限
rabbitmqctl clear_permissions 用户名
# 删除用户
rabbitmqctl delete_user 用户名
# 修改密码
rabbitmqctl change_password 用户名 新密码
8、此版本默认有以下五种角色,直接给用户赋这些角色及拥有相关权限,参考文档 https://www.rabbitmq.com/management.html#permissions
角色 | 权限 |
---|---|
administrator | |
monitoring | |
policymaker | |
management | |
impersonator |
9、登录管理后台页面效果如下
10、多说一嘴
vhost 是AMQP 概念的基础,客户端在连接的时候必须制定一个vhost. RabbitMQ 默认创建的vhost 为"/" , 如果不需要多个vhost 或者对vhost 的概念不是很理解,那么用这个默认的vhost 也是非常合理的。可以使用rabbitmqctl add vhost {vhost} 命令创建一个新的vhost,大括号里的参数表示vhost 的名称
二、默认情况下RabbitMQ是不开启MQTT协议的,所以需要手动的开启相关的插件
1、RabbitMQ的MQTT协议分为两种:a、rabbitmq_mqtt 提供与后端服务交互使用,对应端口1883;b、rabbitmq_web_mqtt 提供与前端交互使用,对应端口15675;
# 开启rabbitmq_mqtt协议
rabbitmq-plugins enable rabbitmq_mqtt
# 开启rabbitmq_web_mqtt协议
rabbitmq-plugins enable rabbitmq_web_mqtt
2、重启RabbitMQ后,登录RabbitMQ管理后台
/sbin/service rabbitmq-server restart
3、mqtt相关概念:
Publisher(发布者):消息的发出者,负责生产数据。发布者发送某个主题的数据给经纪人,发布者不知道订阅者。
Subscriber(订阅者):消息的订阅者,订阅经纪人管理的某个或者某几个主题。
Broker(经纪人):当经纪人接收到某个主题的数据时,将数据发送给这个主题的所有订阅者。
Topic(主题):可以理解为消息队列中的路由,订阅者订阅了主题之后,就可以收到发送到该主题的消息。
Payload(负载);可以理解为发送消息的内容。
QoS(消息质量):全称 Quality of Service,即消息的发送质量,主要有 QoS 0、QoS 1、QoS 2三个等级,下面分别介绍下:
(1) QoS 0(Almost Once):至多一次,只发送一次,会发生消息丢失或重复;
(2) QoS 1(Atleast Once):至少一次,确保消息到达,但消息重复可能会发生;
(3) QoS 2(Exactly Once):只有一次,确保消息只到达一次。
三、下载 MQTTX 测试mq
1、设置语言为“简体中文”。
2、通过客户端连接服务端。
参数解析如下:
a、名称:随便取,只是一个内部别名。
b、Client ID:随机保证不冲突即可。
c、服务器地址:如果没有配ssl,选择mqtt:// ,后面可以是ip或者域名。
d、端口:默认服务端端口1883,可以通过sudo rabbitmqctl environment
查看rabbitmq的环境配置。也可以通过sudo lsof -i -P -n | grep LISTEN
查看linux服务器端口占用情况。
e、用户名,密码:使用上面能进入管理页面的账密即可,或者可以单独分配一套访问MQTT的账密。命令案例如下:
# 创建一个MQTT用户
rabbitmqctl add_user lucas 123456
# 设置用户标签为mqtt,以便该用户可以通过MQTT连接
rabbitmqctl set_user_tags lucas mqtt
# 设置用户权限,允许连接到MQTT代理(如果使用的是默认的"/" vhost)
rabbitmqctl set_permissions -p / lucas ".*" ".*" ".*"
f、MQTT版本:选择3.1,这里很重要
,要和安装的rabbitmq的插件mqtt版本一致。也可以通过sudo rabbitmq-plugins list
查看。