1. 服务器管理

我们使用 “节点” 来指代 RabbitMQ 实例,当我们谈到 RabbitMQ 节点时指的是 RabbitMQ 应用程序和其所在的 Erlang 节点。

1.1 启动节点

启动节点有以下几种方式

rabbitmq-server start
或者
service rabbitmq-server start

或者以守护程序的方式在后台运行:

./rabbitmq-server -detached

该命令会同时启动应用程序和 Erlang 节点。

1.2 停止节点

在 RabbitMQ 的安装目录下执行以下命令时,rabbitmqctl 会和本地节点通信并指示其干净的关闭。

rabbitmqctl stop

该命令会同时关闭应用程序和 Erlang 节点。

1.3 启动应用程序

启动应用程序可输入以下命令:

rabbitmqctl start_app

1.4 停止应用程序

仅停止应用程序可输入以下命令:

rabbitmqctl stop_app

2. 管理用户

RabbitMQ 权限系统使得单个用户可以跨越多个 vhost 进行授权。但是必须创建多个控制条目。

2.1 创建用户

RabbitMQ 配置远程连接

远程访问 RabbitMQ 自己增加一个用户,步骤如下:

  1. 创建一个admin用户:
    sudo rabbitmqctl add_user admin 123123
  1. 设置该用户为administrator角色:
    sudo rabbitmqctl set_user_tags admin administrator
  1. 设置权限
    sudo rabbitmqctl  set_permissions  -p  '/'  admin '.' '.' '.'
  1. 重启rabbitmq服务:
     sudo service rabbitmq-server restart

之后就能用admin用户远程连接rabbitmq server了。

注意:RabbitMQ 默认使用 5672 端口,如果是在云端部署的话需要确认云端的 5672 端口开启。

3. 常用命令汇总

3.1 节点相关

rabbitmq-service start   // 启动 RabbitMQ 节点
rabbitmq-service stop   // 关闭 RabbitMQ 节点
rabbitmq-server restart // 重启 RabbitMQ 节点

3.2 应用相关

rabbitmqctl start_app    // 启动应用
rabbitmqctl stop_app    // 停止应用
rabbitmqctl reset       // 重置应用
rabbitmqctl shutdown    // 关闭应用
rabbitmqctl status      // 查看状态

rabbitmqctl reset 将 RabbitMQ 节点重置还原到最初状态。包括从原来所在的集群中删除此节点,从管理数据库中删除所有的配置数据,如己配置的用户、vhost 等,以及删除所有的持久化消息。执行 rabbitmqctl reset 命令前必须停止 RabbitMQ 应用(比如先执行 rabbitmqctl stop_app ) 。

3.3 用户相关

在 RabbitMQ 中,用户是访问控制 ( Access Contro l) 的基本单元,且单个用户可以跨越多
个 vhost 进行授权。针对一至多个 vhost,用户可以被赋予不同级别的访问权限,并使用标准的用户名和密码来认证用户。

rabbitmqctl add_user {username} {password}       // 添加用户
rabbitmqctl delete_user {username}      // 删除用户
rabbitmqctl change_password {username} {newpassword}    // 修改密码
rabbitmqctl clear_password {username}   // 清除用户密码
rabbitmqctl authentiçate_user {username} {password} // 验证用户
rabbitmqctl set_user_tags {username} administrator  // 分配角色,设置用户标签
rabbitmqctl list_users      // 列出所有用户

将新虚拟主机授权给新用户: rabbitmqctl set_permissions -p vhost_name username ‘.’ '.’ ‘.*’

用户的角色分为 5 种类型:

  • none: 无任何角色。新创建的用户的角色默认为 none。
  • management: 可以访问Web 管理页面
  • policymaker: 包含management 的所有权限,并且可以管理策略(Policy) 和参数(Parameter)。
  • monitoring: 包含 management 的所有权限,并且可以看到所有连接、信道及节点
    相关的信息。
  • administartor: 包含 monitoring 的所有权限,井且可以管理用户、虚拟主机、权限、策略、参数等。administator 代表了最高的权限。

设置角色 rabbitmqctl set_user_tags {username} {tag …}
tag 参数用于设置0 个、1 个或者多个的角色,设置之后任何之前现有的身份都会被删除。

rabbitmqctl set_user_tags  root policymaker , management

设置用户权限 rabbitmqctl set_permissions -p VHostPath admin ConfP WriteP ReadP
查询所有权限 rabbitmqctl list_permissions [-p vhost]
指定用户权限 rabbitmqctl list_user_permissions {user_name}
清除用户权限 rabbitmqctl clear_permissions [-p vhost] {user_name}
其中 vhost 用于设置禁止用户访问的虚拟主机的名称, 默认为"/" ; username 表示禁止访问特定虚拟主机的用户名称。

添加权限: rabbitmqctl set_permissions -p / username “." ".” “.*”
修改用户角色:rabbitmqctl set_user_tags username administrator

权限设置说明:rabbitmqctl set_permissions [-p vhostpath] {user} {conf} {write} {read}
Vhostpath:授予用户访问权限的 vhost 名称,可以设置为默认值,即 vhost 为 “/”。
user:可以访问指定vhost 的用户名。
Conf:一个正则表达式 match 哪些配置资源能够被该用户访问。
Write:一个正则表达式 match 哪些配置资源能够被该用户读写。
Read:一个正则表达式 match 哪些配置资源能够被该用户访问读。

注:可配直指的是队列和交换器的创建及删除之类的操作;可写指的是发布消息;可读指
与消息有关的操作,包括读取消息及清空整个队列等。

3.4 vhost 相关

rabbitmqctl add_vhost  {vhost_name}  // 添加vhost,新增虚拟主机
rabbitmqctl delete_vhost    // 删除vhost
rabbitmqctl list_vhost      // 列出所有的vhost

3.5 权限相关

rabbitmqctl set_permissions [-p] // 设置用户对应的权限
rabbitmqctl list_user_permissions   // 列出用户的权限
rabbitmqctl list_permissions [-p]   // 列出vhost的权限
rabbitmqctl clear_permissions [-p]  // 清除用户的权限

3.6 队列相关

rabbitmqctl list_queues [-p]         // 列出vhsot中对应的queue
rabbitmqctl list_exchanges [-p]     // 列出vhsot中对应的交换机
rabbitmqctl list_bindings [-p]      // 列出对应的绑定信息
rabbitmqctl list_connections        // 列出对应的连接数
rabbitmqctl list_channels           // 列出对应的信道
rabbitmqctl list_consumers          // 列出对应的消费者
rabbitmqctl list_queues -p vhost_test1 //列出queues
rabbitmqctl list_queues -p vhost_test1 name messages consumers memory //查看queues对应统计信息

4. 实践

4.1 使用 docker 创建一个 RabbitMQ 容器

  1. 拉取 RabbitMQ 镜像
wohu@wohu:~$ docker pull rabbitmq
Using default tag: latest
latest: Pulling from library/rabbitmq
7ddbc47eeb70: Pull complete
c1bbdc448b72: Pull complete
8c3b70e39044: Pull complete
45d437916d57: Pull complete
916459a32f87: Pull complete
aba97e76a6d7: Pull complete
6cfc7646d503: Pull complete
5e8c71984192: Pull complete
16722d38aada: Pull complete
b3a7c7a8fb05: Pull complete
Digest: sha256:3c0ebabfb9e8b53b18d4ee060019718f47df17dc4a333f1ae1715963216216bd
Status: Downloaded newer image for rabbitmq:latest
  1. 创建 RabbitMQ 容器
wohu@wohu:~$ docker run -d --log-opt max-size=100m --restart=always --hostname wohu -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone -p 5672:5672 -p 8081:15672 rabbitmq:latest
2aca4e39bb8d5d1fd2373740497c72a1e1ec1638ce98f74dc6aec27c554f1ff2

参数说明:

参数 含义
–log-opt max-size=100m 指定日志文件大小上限
–log-opt max-file=3 指定日志文件个数
–hostname wohu 更改容器主机名为 wohu,否则默认显示数字和字母的混合
–restart=always docker 服务重启时,容器能够自动启动
-v /etc/localtime:/etc/localtime 让容器共享主机的 localtime
-v /etc/timezone:/etc/timezone 让容器共享主机的 timezone
-p 5672:5672 将主机 5672 端口映射到容器端口 5672

说明:
docker 日志默认位置在 /var/lib/docker/containers/containeid 目录下面的 containeid-json.log 文件中

  1. 进入 RabbitMQ 容器,添加账户
wohu@wohu:~$ docker exec -ti 2a /bin/bash
root@wohu:/# rabbitmqctl list_users
Listing users ...
user    tags
guest   [administrator]
root@wohu:/# rabbitmqctl add_user admin 123123
Adding user "admin" ...
root@wohu:/# rabbitmqctl set_user_tags admin administrator
Setting tags for user "admin" to [administrator] ...
root@wohu:/# rabbitmqctl  set_permissions  -p  '/'  admin '.' '.' '.'
Setting permissions for user "admin" in vhost "/" ...
root@wohu:/# exit
exit
  1. 重启容器,查看是否创建成功
wohu@wohu:~$ docker restart 2a
2a
wohu@wohu:~$ docker exec -ti 2a /bin/bash
root@wohu:/# rabbitmqctl list_vhosts
Listing vhosts ...
name
/
root@wohu:/# rabbitmqctl list_users
Listing users ...
user    tags
admin   [administrator]
guest   [administrator]
  1. 开启 RabbitMQ 页面管理插件
    输入 rabbitmq-plugins list 查看插件列表
root@wohu:/# rabbitmq-plugins list
Listing plugins with pattern ".*" ...Configured: E = explicitly enabled; e = implicitly enabled| Status: * = running on rabbit@wohu|/
[  ] rabbitmq_amqp1_0                  3.8.1
[  ] rabbitmq_auth_backend_cache       3.8.1
[  ] rabbitmq_auth_backend_http        3.8.1
[  ] rabbitmq_auth_backend_ldap        3.8.1
[  ] rabbitmq_auth_backend_oauth2      3.8.1
[  ] rabbitmq_auth_mechanism_ssl       3.8.1
[  ] rabbitmq_consistent_hash_exchange 3.8.1
[  ] rabbitmq_event_exchange           3.8.1
[  ] rabbitmq_federation               3.8.1
[  ] rabbitmq_federation_management    3.8.1
[  ] rabbitmq_jms_topic_exchange       3.8.1
[  ] rabbitmq_management               3.8.1
[  ] rabbitmq_management_agent         3.8.1
[  ] rabbitmq_mqtt                     3.8.1
[  ] rabbitmq_peer_discovery_aws       3.8.1
[  ] rabbitmq_peer_discovery_common    3.8.1
[  ] rabbitmq_peer_discovery_consul    3.8.1
[  ] rabbitmq_peer_discovery_etcd      3.8.1
[  ] rabbitmq_peer_discovery_k8s       3.8.1
[  ] rabbitmq_prometheus               3.8.1
[  ] rabbitmq_random_exchange          3.8.1
[  ] rabbitmq_recent_history_exchange  3.8.1
[  ] rabbitmq_sharding                 3.8.1
[  ] rabbitmq_shovel                   3.8.1
[  ] rabbitmq_shovel_management        3.8.1
[  ] rabbitmq_stomp                    3.8.1
[  ] rabbitmq_top                      3.8.1
[  ] rabbitmq_tracing                  3.8.1
[  ] rabbitmq_trust_store              3.8.1
[  ] rabbitmq_web_dispatch             3.8.1
[  ] rabbitmq_web_mqtt                 3.8.1
[  ] rabbitmq_web_mqtt_examples        3.8.1
[  ] rabbitmq_web_stomp                3.8.1
[  ] rabbitmq_web_stomp_examples       3.8.1
root@wohu:/#

开启插件 rabbitmq-plugins enable rabbitmq_management

root@wohu:/# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@wohu:
rabbitmq_management
The following plugins have been configured:rabbitmq_managementrabbitmq_management_agentrabbitmq_web_dispatch
Applying plugin configuration to rabbit@wohu...
The following plugins have been enabled:rabbitmq_managementrabbitmq_management_agentrabbitmq_web_dispatchstarted 3 plugins.
  1. 页面访问
    启动成功之后访问 http://ip:8081/#/, 即可看到 RabbitMQ 的管理页面.
  2. 制作镜像
    将添加账户和开启页面管理插件的容器做成一个镜像文件.
wohu@wohu:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                            NAMES
2aca4e39bb8d        rabbitmq:latest     "docker-entrypoint.s…"   3 hours ago         Up 3 hours          4369/tcp, 5671/tcp, 25672/tcp, 0.0.0.0:5672->5672/tcp, 0.0.0.0:8081->15672/tcp   silly_torvalds
wohu@wohu:~$ docker commit -m "add admin account and enable web management" -a "wohu" 2aca4e39bb8d rabbitmq_web
sha256:f8c3c0b1bf6ca6c030d08e08aaa50c1444d01fc46668a5789c43dd87035e5451
wohu@wohu:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
rabbitmq_web        latest              f8c3c0b1bf6c        5 seconds ago       150MB
rabbitmq            latest              72469b528c2d        9 days ago          150MB
  1. 将镜像文件保存在本地
wohu@wohu:~$ docker save -o web_rabbitmq.tar  rabbitmq_web
wohu@wohu:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
rabbitmq_web        latest              f8c3c0b1bf6c        About a minute ago   150MB
rabbitmq            latest              72469b528c2d        9 days ago           150MB
wohu@wohu:~$ ls
web_rabbitmq.tar
  1. 在其它机器上再导入该镜像文件,就可以使用已将添加的 admin 账户和 web 管理功能
wohu@wohu:~$ docker load -i web_rabbitmq.tar

RabbitMQ 入门系列(4)— RabbitMQ 启动、停止节点和应用程序、用户管理、权限配置相关推荐

  1. RabbitMQ 入门系列(10)— RabbitMQ 消息持久化、不丢失消息

    消息要保持"持久化",即不丢失,必须要使得消息.交换器.队列,必须全部 "持久化". 1. 生产者怎么确认 RabbitMQ 已经收到了消息? # 打开通道的确 ...

  2. java源码如何启动脚本_使用Shell脚本如何启动/停止Java的jar程序

    本文介绍如何使用Shell脚本来开启和停止jar程序的后台运行,以及如何实现out大文件的切分.另外,补充一些后台运行的小知识. 启动脚本:start_upload.sh #!/bin/sh nohu ...

  3. nohup执行的jar 怎么kill_使用Shell脚本如何启动/停止Java的jar程序

    本文介绍如何使用Shell脚本来开启和停止jar程序的后台运行,以及如何实现out大文件的切分.另外,补充一些后台运行的小知识. 启动脚本:start_upload.sh #!/bin/sh nohu ...

  4. Reflex WMS入门系列二十五:将叉车纳入系统进行管理

    Reflex WMS入门系列二十五:将叉车纳入系统进行管理 据笔者所知,SAP WM 模块里是不对仓库里常用的叉车等仓库管理工具进行管理的.笔者发现,Reflex WMS系统则会在很多仓库部门日常操作 ...

  5. RabbitMQ 入门系列(2)— 生产者、消费者、信道、代理、队列、交换器、路由键、绑定、交换器

    本系列是「RabbitMQ实战:高效部署分布式消息队列」和 「RabbitMQ实战指南」书籍的读书笔记. RabbitMQ 中重要概念 1. 生产者 生产者(producer)创建消息,然后发送到代理 ...

  6. RabbitMQ 入门系列(9)— Python 的 pika 库常用函数及参数说明

    1. pika.PlainCredentials(username, password, erase_on_connect) 功能:创建连接时的登录凭证 参数: username: MQ 账号 pas ...

  7. 【JavaSE8 高级编程 IO/NIO】IO入门系列①之抽象基类节点流转换流 2019_8_16

    IO输入输出 IO 实现体系概述 [文档级] ①IO基石 四抽象基类 [IS,OS / R,W]抽象基类简述 子类及其实现接口 字节(FIS,OIS)字符(BR,ISR)读 字节(FOS,OOS,PS ...

  8. sharepoint 2016 学习系列篇(23)-文档库应用篇-(5)文档权限配置

    学习了关于文档的上传,下载,以及属性标签的应用,朋友们估计也会想到,前面学习到了关于列表的数据权限配置, sharepoint 2016 学习系列篇(15)-自定义列表应用篇-(4)数据权限配置 那么 ...

  9. RabbitMQ 入门系列(1)— Ubuntu 安装 RabbitMQ 及配置

    1. RabbitMQ 简介 消息 (Message) 是指在应用间传送的数据.消息可以非常简单,比如只包含文本字符串.JSON等,也可以很复杂,比如内嵌对象. 消息队列中间件(Message Que ...

最新文章

  1. Python --金字塔
  2. JavaScript精简代码 非一般的写法(转载)
  3. java.lang.InstantiationException 不能实例化某个对象
  4. mysql + keepalived高可用
  5. 使用Windows Performance Monitor进行SQL Server性能调整
  6. 零起点英语_【德国零起点】05—变元音字母
  7. android studio打包h5打包,AndroidStudio将html5打包成apk
  8. 【R语言】GARCH模型的应用
  9. python 鸭子类型
  10. 育儿书籍阅读顺序的建议
  11. python高效控制模拟器_使用Python实现RISCV模拟器(一)
  12. 我做的游戏终于上线了----三国Q传!!!
  13. DPU网络开发SDK——DPDK(十二)
  14. C语言实现,古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可)
  15. Unity3D_Could not produce Class With ID xxx
  16. 百度搜索“萧莯csdn”
  17. 中学计算机教材,人教版初中信息技术教材梳理
  18. VSCode配置C/C++(单文件+项目)自救指南
  19. 关于MATLAB2019a的三相全控桥整流电路的画法学习
  20. Vue新手:实现文件预览功能的前端

热门文章

  1. zip压缩多个文件,解压时不包含目录层级
  2. 2022-2028年中国能源期货市场深度调研及投资前景预测报告
  3. 初窥CSRF攻击方式以及Flask-WTF
  4. “年轻”有价值,才是本钱
  5. NLP.TM | GloVe模型及其Python实现
  6. LeetCode简单题之杨辉三角 II
  7. 2020了,还要学JSP嘛?入个门呗!毕竟Servlet亲兄弟~
  8. 利用NVIDIA NGC的TensorRT容器优化和加速人工智能推理
  9. 模拟内存计算如何解决边缘人工智能推理的功耗挑战
  10. php7安装redis6扩展