前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RabbitMQ服务端的安装和使用

RabbitMQ服务端的安装和使用

作者头像
Throwable
发布2020-06-23 16:17:55
7500
发布2020-06-23 16:17:55
举报
文章被收录于专栏:Throwable's BlogThrowable's Blog

前提

工作接近3年,一直有使用RabbitMQ作为服务间解耦的中间件,但是一直没有做一系列学习和总结,这里决心做一个系列总结一下RabbitMQ的运维、使用以及生产中遇到的问题等,以便日后直接拿起来使用。整个系列使用的Linux系统为CentOS 7的最新版本CentOS-7-x86_64-Minimal-1804。而RabbitMQ Server使用当前最新的版本3.7.9.RELEASE。

RabbitMQ Server的安装

RabbitMQ Server使用Erlang语言编写,Erlang语言的并发编程支持比较优异,所以我们要先安装Erlang(类似于我们需要运行Java程序,要先安装JVM):

代码语言:javascript
复制
# 添加erlang的yum源
rpm --import https://packages.erlang-solutions.com/rpm/erlang_solutions.asc

或者直接在目录/etc/yum.repos.d/手动添加一个新的.repo文件(文件名可以随意如erlang.repos),内容是:

代码语言:javascript
复制
[erlang-solutions]
name=CentOS $releasever - $basearch - Erlang Solutions
baseurl=https://packages.erlang-solutions.com/rpm/centos/$releasever/$basearch
gpgcheck=1
gpgkey=https://packages.erlang-solutions.com/rpm/erlang_solutions.asc
enabled=1

然后执行命令安装Erlang:

代码语言:javascript
复制
# 安装erlang
sudo yum install erlang

安装完成之后Erlang会自行后台运行,输入erl就能进入Erlang的命令行工具说明安装成功:

安装Erlang过程中如果提示:

代码语言:javascript
复制
error: Failed dependencies:
	epel-release is needed by erlang-solutions-1.0-1.noarch

说明缺少epel-release依赖,通过sudo yum install epel-release安装epel-release即可。

接着可以安装RabbitMQ Server,先下载其RPM安装包:

代码语言:javascript
复制
## 下载
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.9/rabbitmq-server-3.7.9-1.el7.noarch.rpm

接着在下载文件目录中执行安装命令:

代码语言:javascript
复制
# 在Yum仓库可以使用之前,需要让RPM工具信任RabbitMQ的rpm包的签名,需要执行下面的命令
rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
# Yum安装
yum install rabbitmq-server-3.7.9-1.el7.noarch.rpm

安装完成后,RabbitMQ Server会自行在后台运行,这个时候可以执行命令rabbitmqctl status验证其状态:

RabbitMQ Server启动于停止

RabbitMQ Server已经成功安装为CentOS 7的服务,它的启动和停止可以直接使用systemctl命令:

代码语言:javascript
复制
# 启动
systemctl start rabbitmq-server

# 停止
systemctl stop rabbitmq-server

# 重启
systemctl restart rabbitmq-server

# 前台启动,shell关闭会shutdown
rabbitmq-server start

# 后台启动
rabbitmq-server -detached

当然,也可以使用RabbitMQ Serverrabbitmqctl命令(格式是:rabbitmqctl [-n <node>] [-l] [-q] <command> [<command options>]):

代码语言:javascript
复制
# 停止Erlang上的node节点
rabbitmqctl stop_app
# 启动
rabbitmqctl start_app

安装Web管理插件

RabbitMQ Server管理插件的命令是rabbitmq-plugins [-n <node>] [-l] [-q] <command> [<command options>],command部分目前只有下面几个:

代码语言:javascript
复制
Commands:
    disable <plugin>|--all [--offline] [--online]
    enable <plugin>|--all [--offline] [--online]
    help <command>
    list [pattern] [--verbose] [--minimal] [--enabled] [--implicitly-enabled]
    set [<plugin>] [--offline] [--online]

我们可以通过命令rabbitmq-plugins list先展示所有可用的插件:

其中的rabbitmq_management就是我们需要安装的Web管理界面,执行下面的命令启用Web管理插件:

代码语言:javascript
复制
rabbitmq-plugins enable rabbitmq_management

实际上是启用了rabbitmq_managementrabbitmq_management_agentrabbitmq_web_dispatch三个插件。插件启动完毕后,我们需要添加一个新的用户或者修改原有的guest用户的权限,因为guest用户只允许使用localhost访问Web管理界面。

用户管理

用户账号密码管理常用命令如下:

代码语言:javascript
复制
# 新增一个用户
rabbitmqctl add_user ${username} ${password}
# 修改用户密码
rabbitmqctl change_password ${old_password} ${new_password}
# 验证用户密码
rabbitmqctl authenticate_user ${username} ${password}
# 删除用户
rabbitmqctl delete_user ${username}
# 展示用户列表
rabbitmqctl list_users

例如创建一个用户名和密码都是root的账号:rabbitmqctl add_user root root

用户角色(Tag)管理常用命令格式是rabbitmqctl set_user_tags ${username} ${tag...},可选的角色类型有:

Tag

描述

none

无角色,新创建的用户就是这类型的Tag

management

具备Web管理界面访问权限

policymaker

具备management所有权限,可以管理policy和parameter

monitoring

具备policymaker所有权限,可以监控连接、channel、节点信息等

administrator

管理员权限

例如为root账号赋予管理员权限:rabbitmqctl set_user_tags root administrator

用户权限(Permission)管理常用命令如下:

代码语言:javascript
复制
# 添加权限
# vhost:虚拟host,默认为"/"
# username:用户名
# conf:配置权限,可以用正则表达式
# write:写权限,可以用正则表达式
# read:读权限,可以用正则表达式
rabbitmqctl set_permissions [-p vhost] ${username} ${conf} ${write} ${read}

# 查看虚拟host权限
rabbitmqctl list_permissions [-p vhost]

# 查看用户权限
rabbitmqctl list_user_permissions ${username}

# 清除用户权限
rabbitmqctl clear_permissions [-p vhost] ${username}

例如为root账号赋予虚拟Host为"/"下的所有的配置、读、写权限:rabbitmqctl set_permissions root ".*" ".*" ".*"

我们可以使用root账号登录Web管理界面:

关于RabbitMQ Server多租户(虚拟Host)、角色、权限管理的其他细节暂时不展开,因为可能需要不少的篇幅才能说明。

小结

关于RabbitMQ Server的命令和运维方面的东西暂时不大量展开,按照上面几节搭建好的RabbitMQ服务对于测试或者开发调试已经基本可用,接着就可以通过官方提供的例子进行学习。

参考资料:

参考资料的链接在将来不确定是否有变,主要是参考了erlangrabbitmq的官方文档的安装提示。

(本文完 c-1-d e-20181118)

本文是Throwable的原创文章,转载请提前告知作者并且标明出处。 博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议 本文永久链接是:https://cloud.tencent.com/developer/article/1650047

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年11月18日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前提
  • RabbitMQ Server的安装
  • RabbitMQ Server启动于停止
  • 安装Web管理插件
  • 用户管理
  • 小结
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档