RabbitMQ

引言

RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。

MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。RabbitMQ可以,多个程序同时使用RabbitMQ ,但是必须队列名称不一样。采用erlang语言,属于爱立信公司开发的。

起停服务

# 启用web管理界面
# rabbitmq-plugins enable rabbitmq_management
# 开启服务:rabbitmq-server -detached
# 关闭服务:rabbitmqctl stop (连同节点上的其它应用程序一同关闭了)
# or
# 关闭服务:rabbitmqctl stop_app (只关闭rabbitmq节点)
# 开启插件:rabbitmq-plugins enable 插件名
# 关闭插件:rabbitmq-plugins disable 插件名
# 检查rabbitmq状态:rabbitmqctl status

启动后查看进程(已开启web插件)

此时,即可打开浏览器输入http://127.0.0.1:15672地址,进入web端(如下图)

登陆用户,系统默认用户:账号:guest  密码:guest   角色:administration

如想新建用户,可通过下方命令,自行创建!

默认端口

4369 (epmd), 25672 (Erlang distribution)
5672, 5671 (AMQP 0-9-1 without and with TLS)
15672 (if management plugin is enabled)
61613, 61614 (if STOMP is enabled)
1883, 8883 (if MQTT is enabled) # 特殊说明
web:15672
api_port:5672

配置文件和日志

# 默认情况下rabbitmq的日志在     /var/log/rabbitmq/rabbit@[hostname].log
# 默认配置文件         /etc/rabbitmq/rabbitmq.config

用户管理

# 新建用户:rabbitmqctl add_user username password
# 删除用户:rabbitmqctl delete_user username
# 查看用户列表:rabbitmqctl list_users
# 查看用户列表:rabbitmqctl list_users

例:

# 新建用户 zhaok
rabbitmqctl add_user zhaok ******
# 修改用户密码 zhaok
rabbitmqctl change_password zhaok newpassword
# 删除用户 zhaok
rabbitmqctl delete_user zhaok

角色授权

角色大致有五类:
  超级管理员administrator, 监控者monitoring, 策略制定者policymaker, 普通管理者management以及其他
角色说明:
超级管理员(administrator):可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。


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

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


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


其他(other):无法登陆管理控制台,通常就是普通的生产者和消费者。

略。。。

授权角色

# 授权角色:rabbitmqctl  set_user_tags  User  Tag
# 查看用户角色: 可通过rabbitmqctl list_users查看
# 重新授权,直接重新执行授权命令即可

User为用户名, Tag为角色名(对应于上面的administrator,monitoring,policymaker,management,或其他自定义名称)

例:

# 授权单角色
rabbitmqctl set_user_tags zhaok monitoring
# 授权多角色
rabbitmqctl set_user_tags zhaok monitoring policymaker

可通过查看用户命令来查看用户角色

权限授权

用户授权说明(与角色之间不同,不可混淆)

rabbitmq的权限控制通过两层来实现,一是vhost的权限,二是确认有权限访问vhost后,对vhost内资源的权限控制(配置,读,写)

通俗的可以理解为:指用户对exchange,queue的操作权限,包括配置权限,读写权限。配置权限会影响到exchange,queue的声明和删除。读写权限影响到从queue里取消息,向exchange发送消息以及queue和exchange的绑定(bind)操作等等

授权分三个操作:
  读:有关消费消息的任何操作,包括"清除"整个队列
  写:发布消息
  配置:队列和交换机的创建和删除

每一条访问控制是由以下四部分组成:
  1、被授予访问权限的用户
  2、权限控制应用的Vhost
  3、需要授权的读/写/配置权限组合
  4、权限范围——权限控制仅应用与客户端命名的队列和交换机
注:访问控制权限是无法跨越Vhost的!!!

(1) 设置用户权限
rabbitmqctl set_permissions -p VHostPath User ConfP WriteP ReadP
(2) 查看(指定hostpath)所有用户的权限信息
rabbitmqctl list_permissions [-p VHostPath]
(3) 查看指定用户的权限信息
rabbitmqctl list_user_permissions User
(4) 清除用户的权限信息
rabbitmqctl clear_permissions [-p VHostPath] User

例:

# 单用户授权
示例:rabbitmqctl set_permissions -p broker_one producer_one ".*" ".*" ".*"
# 说明:给用户producer_one授权 vhost名称为broker_one的 配置 写入 读取的权限
示例:rabbitmqctl set_permissions -p broker_one producer_one " " ".*" " "
# 说明:给用户producer_one授权 vhost名称为broker_one的 配置 写入 读取的权限

特殊说明:
  “---” 双引号中的信息为正则表达式
  ".*" 表示配置任何队列和交换机
  "checks-.*"表示只能配置名字以"checks-"开头的队列和交换机
  " " 不匹配队列和交换机

virtual_host管理

新建virtual_host: rabbitmqctl add_vhost xxx
撤销virtual_host: rabbitmqctl delete_vhost xxx
查看列表:rabbitmqctl list_vhosts

队列管理

查看当前队列信息:rabbitmqctl list_queues
清除所有队列:rabbitmqctl reset

获取服务器状态信息

查看节点信息:rabbitmqctl cluster_status
服务器状态:rabbitmqctl status
queue信息:rabbitmqctl list_queues # 默认会查看 / 下的队列
# 如果想看其他vhost中的,加参数 -p "vhost_name"
exchange信息:rabbitmqctl list_exchanges
binding信息:rabbitmqctl list_bindings
connection信息:rabbitmqctl list_connections
channel信息:rabbitmqctl list_channels

集群命令

集群的事宜会有详解,暂略

查看集群状态:rabbitmqctl cluster_status
创建集群:rabbitmqctl join_cluster 节点@主机名

全命令

RabbitMQ权限的更多相关文章

  1. RabbitMQ权限控制原理

    我们在使用MQ搭建系统的时候,经常要开放队列给外接系统访问.外接系统的稳定性是不可控的.为了防止外接系统不稳定导致误操作破坏了MQ的配置或数据,需要对MQ做比较精细的权限控制. 我的需求是这样的: 我 ...

  2. rabbitMQ权限相关命令

    权限相关命令为: (1) 设置用户权限 rabbitmqctl  set_permissions  -p  VHostPath  User  ConfP  WriteP  ReadP (2) 查看(指 ...

  3. RabbitMQ 权限分离&HA操作文档

    概要 默认情况下,使用帐号guest帐号登陆MQ,所有用户的queue信息,全部创建在根目录/的virtual host下,而这样,就会导致,任一用户登录后,都能看到其他用户的queue信息. 针对以 ...

  4. rabbitmq权限细分二

    禁止用户远程登录 主要有以下几步 1.进入容器 docker exec -it ID /bin/bash 2.打开配置文件 vi /etc/rabbitmq/rabbitmq.conf 3.加入配置, ...

  5. RabbitMQ用户角色及权限控制

    RabbitMQ的用户角色分类:none.management.policymaker.monitoring.administrator RabbitMQ各类角色描述:none不能访问 managem ...

  6. RabbitMQ用户角色及权限控制(转)

    转载至:https://blog.csdn.net/awhip9/article/details/72123257 2017年05月15日 10:39:26 awhip9 阅读数:3538   ### ...

  7. RabbitMQ用户角色及权限控制 -2

    1.RabbitMQ的用户角色分类: none.management.policymaker.monitoring.administrator none 不能访问 management plugin ...

  8. RabbitMQ用户角色及权限控制(不错)

    ########################用户角色####################### RabbitMQ的用户角色分类:none.management.policymaker.moni ...

  9. rabbitMQ安装docker版 /权限管理命令

    1.进入docker hub镜像仓库地址:https://hub.docker.com/ 2.搜素rabbitMQ 查询镜像,可以看到多种类型,选择带有web页面的(managment) 3.拉取镜像 ...

随机推荐

  1. centos下安装Mysql5.7.20

    0.环境 本文操作系统: CentOS 7.2.1511 x86_64MySQL 版本: 5.7.16 1.卸载系统自带的 mariadb-lib [root@centos-linux ~]# rpm ...

  2. Skype SILK vs. iLBC vs. Speex

    对比一下这三种VOIP语音算法的特点: 1 参数与特征 2 SILK性能 关于iLBC和Speex的性能可以参考以前写的文章. 3 关于VOIP一些观点(仅代表个人观点) 1)  Skype 辛苦三年 ...

  3. [BZOJ1396&2865]识别子串

    bzoj1396 bzoj2865 dbzoj1396 dbzoj2865 题面 XX在进行字符串研究的时候,遇到了一个十分棘手的问题. 在这个问题中,给定一个字符串\(S\),与一个整数\(K\), ...

  4. 一个内存增长问题的分析和处理(二)——valgrind工具的用法

    valgrind是linux下对C++和C程序进行内存泄露检测的工具,除了内存检测,valgrind还提供了很多其他的功能,这里主要介绍下valgrind的内存检测的功能. 首先是文件的下载,valg ...

  5. flask+uswgi+nginx+python3.6的venv发布网站ubuntu14.04

    ---------------------------nginx--------------- sudo apt-get install nginx sudo apt-get remove nginx ...

  6. 批量清除过期的binlog释放磁盘空间

    方案,总共24台db,一台台进去清理肯定不行,得需要写一个脚本,进行批量操作,方案思路大概如下 1,  建立双master列表masterlist; 一个master一行. 2,远程获取master ...

  7. Python:Iterable和Iterator

    转于:https://blog.csdn.net/whgqgq/article/details/63685066 博主:gongqi1992 iterable和iterator最基本的区别: iter ...

  8. nginx实现带参数目录域名重定向二级域名方法

    本文章介绍了关于nginx实现带参数目录域名重定向二级域名方法,有需要学习的朋友可参考一下. 下面的代码是基于nginx的子目录301到其他域名(URL)的规则.作用是例如访问http://www.p ...

  9. IDEA 热部署 + 下载jar包放到maven中

    IDEA 热部署: 1 :  POM中加入devtools的依赖,就可以实现热部署 <dependency> <groupId>org.springframework.boot ...

  10. qt程序异常结束crashed

    今天调试以前写的opencv的程序发现每次一点运行就报错误 Starting D:\Qt\QProjects\build-HelloWorld-lian-Debug\debug\HelloWorld. ...