RabbitMQ的安装及使用

RabbitMQ 安装

安装环境:

  • CentOS7
1
2
3
4
5
6
7
8
9
10
11
wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm

rpm -Uvh erlang-solutions-1.0-1.noarch.rpm

yum install epel-release

yum install erlang

wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm

yum install rabbitmq-server-3.6.6-1.el7.noarch.rpm

RabbitMQ 常用端口

client 端通信端口: 5672

管理端口 : 15672

server 间内部通信端口: 25672

可能的问题

如端口出现不能访问,考虑是否防火墙问题,可以使用形如以下命令开启或直接关闭防火墙:

firewall-cmd --add-port=15672/tcp --permanent

运行 rabbitmqctl status 出现 Error: unable to connect to node rabbit@controller: nodedown 之类问题考虑如下几种解决办法:

1、重启服务

service rabbitmq-server stop

service rabbitmq-server start

2、检查 /var/lib/rabbitmq 中是否存在 .erlang.cookie,没有则新建一个,里面随便输入一段字符串

3、重新安装服务

4、百度或者 Google 一下

管理 RabbitMQ

日志一般存放位置

Linux

/var/log/rabbitmq/rabbit@XXX.log

/var/log/rabbitmq/rabbit@XXX-sasl.log

Windows

C:\Users\Administrator\AppData\Roaming\RabbitMQ\log\ rabbit@XXX.log

C:\Users\Administrator\AppData\Roaming\RabbitMQ\log\ rabbit@ XXX-sasl.log

第一个是记录 MQ 启动、连接日志,第二个是 saal 用来记录 Erlang 相关的信息,例如查看 Erlang 崩溃的报告。

管理虚拟主机

rabbitmqctl add_vhost [vhost_name]

rabbitmqctl list_vhosts

启动和关闭 rabbitmq

以服务方式

service rabbitmq-server stop

service rabbitmq-server start

service rabbitmq-server status

以应用程序方式

rabbitmq-server 启动 Erlang 节点和 Rabbitmq 应用

rabbitmqctl stop 关闭 Erlang 节点和 Rabbitmq 应用

rabbitmqctl status 可以检查消息节点是否正常

RabbitMQ 配置文件放在 /etc/rabbitmq 下,名为 rabbitmq.config,没有且需要使用则可以自己新建一个

单独关闭 RabbitMQ 应用

rabbitmqctl stop_app 关闭 Rabbitmq 应用

rabbitmqctl start_app 启动 Rabbitmq 应用

用户管理

rabbitmqctl add_user [username] [pwd]

rabbitmqctl delete_user [username]

rabbitmqctl change_password Username Newpasswordrabbitmqctl list_users

用户权限控制

guest 用户

guest 是默认用户,具有默认 virtual host “/“上的全部权限,仅能通过 localhost 访问 RabbitMQ 包括 Plugin,建议删除或更改密码。可通过将配置文件中 loopback_users 来取消其本地访问的限制:[{rabbit, [{loopback_users, []}]}]

用户权限

用户仅能对其所能访问的 virtual hosts 中的资源进行操作。这里的资源指的是 virtual hosts 中的 exchanges、queues 等,操作包括对资源进行配置、写、 读。配置权限可创建、删除、资源并修改资源的行为,写权限可向资源发送消息,读权限从资源获取消息。比如:

exchange 和 queue 的 declare 与 delete 分别需要:exchange 和 queue 上的配置权限

queue 的 bind 与 unbind 需要:queue 写权限,exchange 的读权限

发消息(publish)需 exchange 的写权限

获取或清除(get、consume、purge)消息需 queue 的读权限

对何种资源具有配置、写、读的权限通过正则表达式来匹配,具体命令如下:

rabbitmqctl set_permissions [-p <vhostpath>] <user><conf><write><read>

如用户 King 在虚拟主机 logHost 上的所有权限:

rabbitmqctl set_permissions –p logHost King '.*' '.*' '.*'

设置用户角色:

rabbitmqctl set_user_tags User Tag

User 为用户名, Tag 为角色名(对应于下面的 administrator,monitoring,policymaker,management,none)

RabbitMQ 的用户角色分类

none

  • 不能访问 management plugin,通常就是普通的生产者和消费者

management

  • 普通的生产者和消费者加:
  • 列出自己可以通过 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

  • policymaker 和 monitoring 可以做的任何事加:
  • 创建和删除 virtual hosts
  • 查看、创建和删除 users
  • 查看创建和删除 permissions
  • 关闭其他用户的 connections

查看

查看队列

rabbitmqctl list_queues

查看交换器

rabbitmqctl list_exchanges

查看绑定

rabbitmqctl list_bindings

如果命令不太懂,可以直接 rabbitmqctl 命令进行查询