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中主要有administrator
,monitoring
,policymaker
,management
,impersonator
,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
用户权限
给用户分配权限主要包括两方面:
- 绑定到指定的Vhost上,只有绑定到Vhost上,用户才能访问该Vhost上的资源。
- 设置对队列、交换机的权限,这些权限包括配置权限和读写权限。配置权限会影响到交换机、队列的声明和删除。读写权限影响到从队列里取消息,向交换机发送消息以及队列和交换机的绑定(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 // 清除用户的权限信息
参考文章
本作品采用《CC 协议》,转载必须注明作者和本文链接