RabbitMQ基础入门

安装

安装Erlang

RabbitMQ是使用Erlang所编写的,所以RabbitMQ的运行依赖Erlang。为了简单起见,这里只安装RabbitMQ官方提供的“零依赖”版Erlang
新建/etc/yum.repos.d/rabbitmq_erlang.repo文件并键入以下内容:

  • CentOS 8

    [rabbitmq_erlang]
    name=rabbitmq_erlang
    baseurl=https://packagecloud.io/rabbitmq/erlang/el/8/$basearch
    repo_gpgcheck=1
    gpgcheck=1
    enabled=1
    # PackageCloud's repository key and RabbitMQ package signing key
    gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
         https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
    sslverify=1
    sslcacert=/etc/pki/tls/certs/ca-bundle.crt
    metadata_expire=300
    [rabbitmq_erlang-source]
    name=rabbitmq_erlang-source
    baseurl=https://packagecloud.io/rabbitmq/erlang/el/8/SRPMS
    repo_gpgcheck=1
    gpgcheck=0
    enabled=1
    # PackageCloud's repository key and RabbitMQ package signing key
    gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
         https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
    sslverify=1
    sslcacert=/etc/pki/tls/certs/ca-bundle.crt
    metadata_expire=300
  • CentOS 7

    [rabbitmq_erlang]
    name=rabbitmq_erlang
    baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/$basearch
    repo_gpgcheck=1
    gpgcheck=1
    enabled=1
    # PackageCloud's repository key and RabbitMQ package signing key
    gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
         https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
    sslverify=1
    sslcacert=/etc/pki/tls/certs/ca-bundle.crt
    metadata_expire=300
    [rabbitmq_erlang-source]
    name=rabbitmq_erlang-source
    baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/SRPMS
    repo_gpgcheck=1
    gpgcheck=0
    enabled=1
    # PackageCloud's repository key and RabbitMQ package signing key
    gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
         https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
    sslverify=1
    sslcacert=/etc/pki/tls/certs/ca-bundle.crt
    metadata_expire=300

执行以下命令即可安装:

yum install erlang

下载安装包

RabbitMQ官方提供编译好的二进制安装包,下载解压后即可使用,非常方便,下载地址:
www.rabbitmq.com/install-generic-u...
选择对应操作系统的版本即可。
.xz压缩文件解压方法:

tar -xvJf rabbitmq-server-generic-unix-3.8.7.tar.xz

启用管理插件

RabbitMQ的管理插件提供了一套基于HTTP的API,用于管理和监控RabbitMQ的节点和集群,它同时提供了网页界面和命令行工具rabbitmqadmin
要启用管理插件,只需要执行以下命令:

./sbin/rabbitmq-plugins enable rabbitmq_management

管理网页的默认访问端口是15672,你可以使用下面的网址来访问:http://{node-hostname}:15672/

RabbitMQ管理

RabbitMQ的命令文件位于安装目录下的sbin目录中

  • 启动
    ./sbin/rabbitmq-server  // 开启
    ./sbin/rabbitmq-server -detached // 守护线程开启
    ./sbin/rabbitmqctl reset // 重启节点
  • 关闭
    ./sbin/rabbitmqctl stop // 停止
    ./sbin//rabbitmqctl stop_app // 停止应用
    ./sbin/rabbitmqctl -n rabbit@server.example.com stop  // 停止特定节点
  • 查询
    ./sbin/rabbitmqctl status // 查看服务状态
    ./sbin/rabbitmqctl list_bindings // 查看绑定
    ./sbin/rabbitmqctl list_exchanges // 查看交换器
    ./sbin/rabbitmqctl list_queues // 查看队列

用户与权限

用户管理

./sbin/rabbitmqctl list_users // 查看用户
./sbin/rabbitmqctl add_user developer 123456  // 添加用户
./sbin/rabbitmqctl/delete_user developer // 删除用户
./sbin/rabbitmqctl change_password developer developer123456

角色管理

RabbitMQ中主要有administratormonitoringpolicymakermanagementimpersonator,none几种角色。每种角色的权限如下:

  • none:
    不能进入Web Management,只能发送和接收消息,所以一般生产者和消费者默认角色就是这个。
  • management:
    用户可以通过AMQP做的任何事外加:
    列出自己可以通过AMQP登入的virtual hosts,查看自己的virtual hosts中的queues、exchanges和bindings,查看和关闭自己的channels和connections。查看有关自己的virtual hosts的“全局”的统计信息,包含其他用户在这些virtual hosts中的活动。
  • policymaker:
    management可以做的任何事外加:
    查看、创建和删除自己的virtual hosts所属的policies和parameters。
  • monitoring:
    management可以做的任何事外加:列出所有virtual hosts,包括他们不能登录的virtual hosts;查看其他用户的connections和channels;查看节点级别的数据如clustering和memory使用情况;查看真正的关于所有virtual hosts的全局的统计信息。
  • administrator:
    超级管理员,拥有最高的权限,可以做任何事

给用户分配角色:

./sbin/rabbitmqctl set_user_tags developer administrator monitoring

VirtualHost管理

RabbitMQ中的VirtualHost是一台逻辑上独立的服务器,它提供了一种隔离机制,在多租户使用的时候特别有用。每一个VHost都有自己的交换机、队列、绑定和权限控制,允许不同的Vhost之间拥有同名的队列、交换机。拿MySQL来类比,VHost就相当于MySQL中的数据库,队列、交换机就相当于库的表,每个库都可以有自己的权限配置。
VHost控制命令

./sbin/rabbitmqctl list_vhosts  // 列举所有Vhost
./sbin/rabbitmqctl add_vhost test // 添加Vhost
./sbin/rabbitmqctl delete_vhost test // 删除Vhost

用户权限

给用户分配权限主要包括两方面:

  1. 绑定到指定的Vhost上,只有绑定到Vhost上,用户才能访问该Vhost上的资源。
  2. 设置对队列、交换机的权限,这些权限包括配置权限和读写权限。配置权限会影响到交换机、队列的声明和删除。读写权限影响到从队列里取消息,向交换机发送消息以及队列和交换机的绑定(binding)操作。
    例如: 将队列绑定到某交换机上,需要具有队列的可写权限,以及交换机的可读权限;向交换机发送消息需要具有交换机的可写权限;从队列里取数据需要具有队列的可读权限。

设置用户权限的命令格式

./sbin/rabbitmqctl set_permissions -p VHostPath User ConfP WriteP ReadP

一个例子

./sbin/rabbitmqctl set_permissions -p / developer ".*" ".*" ".*"

其它常用命令

./sbin/rabbitmqctl list_permissions [-p VHostPath] // 查看(指定hostpath)所有用户的权限信息
./sbin/rabbitmqctl list_user_permissions User // 查看指定用户的权限信息
./sbinrabbitmqctl clear_permissions [-p VHostPath] User // 清除用户的权限信息

参考文章

  1. RabbitMQ使用教程(二)RabbitMQ用户管理,角色管理及权限设置
  2. RabbitMQ入门教程(十三):虚拟主机vhost与权限管理
  3. Rabbitmq用户权限配置
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!