rabbitmq+mqtt+java推送消息到客户端时的用户设置

要求服务端可订阅和发布,客户端只能订阅。全部命令在第7个小点

1 启用mqtt插件

rabbitmq集成了mqtt插件,可直接用rabbitmq来开启此功能。

 

安装完rabbitmq后,启动mqtt插件。

[root@SVSsbin]# /usr/sbin/rabbitmq-plugins enable rabbitmq_mqtt

查看rabbitmq插件是否已启用

/usr/sbin/rabbitmq-plugins list

Rabbit有自己的安全机制,默认情况下guest(用户名密码都是guest)只允许在本机连接。为了让外部机器能够连接rabbitmq,需要进行如下操作。

 

2 增加vhost

sudo rabbitmqctl add_vhost vhost

vhost:要创建的虚拟主机项的名称.

例:

sudo rabbitmqctl add_vhost /hhm_mqtt

 

3 增加用户

sudo rabbitmqctl add_user username password

username要创建的用户的名称。

password创建的用户将用来登录代理的密码.

 

由于希望客户端那边是只订阅的,而服务器这边是可以发布和订阅的,因此需要创建两个用户

例:

sudo rabbitmqctl add_user hhm_server 123456

sudo rabbitmqctl add_user hhm_client 123456

 

4 设置用户标签(角色)

有以下几种用户角色

(1) 超级管理员(administrator)

可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。

(2) 监控者(monitoring)

可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)

(3) 策略制定者(policymaker)

可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。

(4) 普通管理者(management)

仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。

(5) none

无法登陆管理控制台,通常就是普通的生产者和消费者。

 

将hhm_server和hhm_client的角色设为none

sudo rabbitmqctl set_user_tags hhm_server none

sudo rabbitmqctl set_user_tags hhm_client none

 

5 vhost权限

sudo rabbitmqctl set_permissions [-p vhost]user conf write read

vhost要向其授予用户访问权限的虚拟主机的名称, 默认为 “/”。

user要授予对指定虚拟主机的访问权限的用户的名称。

conf与用户被授予配置权限的资源名称匹配的正则表达式。

write与用户被授予写入权限的资源名称匹配的正则表达式。

read与用户被授予读取权限的资源名称匹配的正则表达式。

 

给hhm_server和hhm_client分配/hhm_mqtt虚拟机下所有权限

sudo rabbitmqctl set_permissions -p /hhm_mqtt hhm_server ".*" ".*" ".*"

sudo rabbitmqctl set_permissions -p /hhm_mqtt hhm_client ".*" ".*" ".*"

6 主题权限

set_topic_permissions [-p vhost] user exchange write read

vhost:授予用户访问权的虚拟主机的名称,默认为“/”。

user:目标虚拟主机中的权限适用的用户的名称。

exchange:主题交换授权检查名称将应用于。

write:与发布的消息的路由键匹配的正则表达式。

read:与消费消息的路由键匹配的正则表达式。

设置用户主题权限

Mqtt的默认交换器(exchanger)是amq.topic。

hhm_server作为服务端消息发布者,可订阅和发布消息。

hhm_client作为客户端订阅消息,只可订阅消息。

分别设置两个用户在交换器底下的权限

sudo rabbitmqctl set_topic_permissions -p /hhm_mqtt hhm_server amq.topic ".*" ".*"

sudo rabbitmqctl set_topic_permissions -p /hhm_mqtt hhm_client amq.topic "#" ".*"

 

至此完成。

 

7 附录(全部命令)

  1. 开启插件

/usr/sbin/rabbitmq-plugins enable rabbitmq_mqtt

  1. 创建v-host

sudo rabbitmqctl add_vhost /hhm_mqtt

  1. 创建两个用户

sudo rabbitmqctl add_user hhm_server 123456

sudo rabbitmqctl add_user hhm_client 123456

  1. 设置用户角色

sudo rabbitmqctl set_user_tags hhm_server none

sudo rabbitmqctl set_user_tags hhm_client none

  1. 设置用户在v-host下的权限

sudo rabbitmqctl set_permissions -p /hhm_mqtt hhm_server ".*" ".*" ".*"

sudo rabbitmqctl set_permissions -p /hhm_mqtt hhm_client ".*" ".*" ".*"

  1. 设置主题权限

sudo rabbitmqctl set_topic_permissions -p /hhm_mqtt hhm_server amq.topic ".*" ".*"

sudo rabbitmqctl set_topic_permissions -p /hhm_mqtt hhm_client amq.topic "#" ".*"

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值