1. 闲不住的人首页
  2. 其它服务

CentOS7安装RabbitMQ

本文整理出了如何安装 RabbitMQ、使用 rabbitmq_management 来管理插件并启用 RabbitMQ 控制台,以及使用 rabbitmqctl 管理命令进行一些常见的管理类操作。

简介

RabbitMQ 是一个消息代理。它的核心思想非常简单:接收并转发消息。你可以把它想象成一个邮局:当你把邮件丢进邮箱时,你非常确定邮递员先生会把它送到收件人手中。在这个比喻中,RabbitMQ 就是邮箱、邮局和邮递员。

RabbitMQ 和邮局的主要区别是它处理的不是纸张。它接收、存储并转发二进制数据块,也就是 message,消息。

通常来讲,RabbitMQ 和消息传递中会用到一些术语:

  • producing 的意思是发送。一个发送消息的程序叫做 producer。图中我们用一个“P”来表示它:
producer生产者
  • 一个 queue,即队列,相当于一个邮箱,它由 RabbitMQ 管理。尽管消息会在你的应用和 RabbitMQ 之间流过,但他们只被保存在队列中。队列没有边界限制,你想存多少消息就能存多少——它本质上是一个无限制的缓冲区。一个队列可以接收多个 producer 的消息,也可以被多个 consumer 读取。下图是一个队列,上边的字代表它的名字:
queue队列
  • consuming 的意思类似于接收。一个等待接收消息的程序叫做 consumer。在图中我们用一个“C”来表示它。
consumer消费者

要注意,producer、consumer 和消息代理不需要生活在同一台机器上,事实上大多数应用中它们会分开住。

1. 安装 RabbitMQ

  • 操作系统版本: CentOS Linux release 7.5.1804 (Core)

1.1 配置 EPEL Repository

国内的话建议配置阿里云的镜像仓库。

$ wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
$ wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
$ yum clean all
$ yum makecache
# 安装 RabbitMQ
$ yum -y install rabbitmq-server

1.2 启用 rabbitmq_management 管理插件

在这之前先学习一下如何使用 rabbitmq-plugins 命令管理插件

rabbitmq-plugins <command> [<command options>]

Commands:
    # 列出可用插件,插件前显示 [E] 的表示启用的插件,[e] 的表示被[E]依赖而启用的
    list [-v] [-m] [-E] [-e] [<pattern>]
    # 启用插件
    enable <plugin> ... 
    # 禁用插件
    disable <plugin> ...

接下来启用 rabbimq_management 管理插件

$ rabbitmq-plugins enable rabbitmq_management

$ rabbitmq-plugins list
[e] amqp_client                       3.3.5
[ ] cowboy                            0.5.0-rmq3.3.5-git4b93c2d
[ ] eldap                             3.3.5-gite309de4
[e] mochiweb                          2.7.0-rmq3.3.5-git680dba8
[ ] rabbitmq_amqp1_0                  3.3.5
[ ] rabbitmq_auth_backend_ldap        3.3.5
[ ] rabbitmq_auth_mechanism_ssl       3.3.5
[ ] rabbitmq_consistent_hash_exchange 3.3.5
[ ] rabbitmq_federation               3.3.5
[ ] rabbitmq_federation_management    3.3.5
[E] rabbitmq_management               3.3.5
[e] rabbitmq_management_agent         3.3.5
[ ] rabbitmq_management_visualiser    3.3.5
[ ] rabbitmq_mqtt                     3.3.5
[ ] rabbitmq_shovel                   3.3.5
[ ] rabbitmq_shovel_management        3.3.5
[ ] rabbitmq_stomp                    3.3.5
[ ] rabbitmq_test                     3.3.5
[ ] rabbitmq_tracing                  3.3.5
[e] rabbitmq_web_dispatch             3.3.5
[ ] rabbitmq_web_stomp                3.3.5
[ ] rabbitmq_web_stomp_examples       3.3.5
[ ] sockjs                            0.3.4-rmq3.3.5-git3132eb9
[e] webmachine                        1.10.3-rmq3.3.5-gite9359c7

1.3 启动 rabbitmq-server

$ systemctl start rabbitmq-server

RabbitMQ 端口说明:

  • 5672:为 rabbimq 自己监听的端口;
  • 15672:为 rabbitmq_management 管理插件监听的端口,可以通过 web 访问;
  • 25672:为 RabbitMQ 集群模式时通信的端口;

1.4 访问 rabbitmq_management 控制台

打开浏览器输入地址: http://IP:15672 这里的IP要换成你自己的 IP 地址,默认用户名,密码为guest

访问 RabbitMQ 控制台

登录成功之后大部分的 RabbitMQ 管理工作都可以在此控制台中完成。

RabbitMQ控制台

2. 常用管理命令

RabbitMQ 提供了一个管理命令 rabbitmqctl

2.1 用户管理

rabbitmqctl [-n <node>] [-q] <command> [<command options>]

Commands:
    # 添加一个用户
    add_user <username> <password> 
    # 删除用户
    delete_user <username>
    # 修改密码
    change_password <username> <newpassword>
    # 清除密码
    clear_password <username>
    # 给用户设置标签 
    set_user_tags <username> <tag> ...
    # 列出所有用户
    list_users

练习

  1. 添加用户 test 密码为:123456
  2. 给 test 用户设置标签为 administrator
root@db03v-test-ops:~ # rabbitmqctl add_user test 123456
Creating user "test" ...
...done.
root@db03v-test-ops:~ # rabbitmqctl list_users
Listing users ...
guest   [administrator]
test    []
...done.
root@db03v-test-ops:~ # rabbitmqctl set_user_tags test administrator
Setting tags for user "test" to [administrator] ...
...done.
root@db03v-test-ops:~ # rabbitmqctl list_users
Listing users ...
guest   [administrator]
test    [administrator]
...done.

2.2 虚拟主机管理

rabbitmqctl [-n <node>] [-q] <command> [<command options>]

Commands:
    # 创建一个虚拟主机
    add_vhost <vhostpath>
    # 删除虚拟主机
    delete_vhost <vhostpath>
    # 列出虚拟主机,默认只有 / 一个虚拟主机,创建的所有虚拟主机都必须在 / 下,例如 /myvhosts
    list_vhosts [<vhostinfoitem> ...]
  1. 列出所有虚拟主机
  2. 创建虚拟主机 myvhost
root@db03v-test-ops:~ # rabbitmqctl list_vhosts
Listing vhosts ...
/
...done.
root@db03v-test-ops:~ # rabbitmqctl add_vhost /myvhost
Creating vhost "/myvhost" ...
...done.
root@db03v-test-ops:~ # rabbitmqctl list_vhosts       
Listing vhosts ...
/
/myvhost
...done.

2.3 权限管理

rabbitmqctl [-n <node>] [-q] <command> [<command options>]

Commands:
    # 设置指定虚拟主机的权限,权限分为<conf>配置文件权限,<wirte>写权限,<read>读权限
    set_permissions [-p <vhostpath>] <user> <conf> <write> <read>
    # 清除权限
    clear_permissions [-p <vhostpath>] <username>
    # 列出虚拟主机的权限
    list_permissions [-p <vhostpath>]
    # 以用户为中心列出权限
    list_user_permissions <username>

练习

1、 查看 guest 和 test 用户的权限

root@db03v-test-ops:~ # rabbitmqctl list_user_permissions guest
Listing permissions for user "guest" ...
/       .*      .*      .*
...done.
root@db03v-test-ops:~ # rabbitmqctl list_user_permissions test 
Listing permissions for user "test" ...
...done.

2、给 test 用户设置对 /myvhost 虚拟主机有所有权限

root@db03v-test-ops:~ # rabbitmqctl set_permissions -p /myvhost test ".*" ".*" ".*"
Setting permissions for user "test" in vhost "/myvhost" ...
...done.
root@db03v-test-ops:~ # rabbitmqctl list_user_permissions test
Listing permissions for user "test" ...
/myvhost        .*      .*      .*
...done.

2.4 其它命令

rabbitmqctl [-n <node>] [-q] <command> [<command options>]

Commands:
    # broker状态查看:
        status

    # 环境变量查看:
        environment

    # 执行erlang底层表达式:
        eval <expr>

    # 关闭指定的连接:
        close_connection <connectionid> <explanation>
    # 设定内存高水位标记:
        set_vm_memory_high_watermark <fraction>

原创文章,作者:恩志,如若转载,请注明出处:https://www.xbzdr.com/155.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

在线咨询:点击这里给我发消息

邮件:510749025@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code