简介
消息队列(Message Queue,简称MQ),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已。
其主要用途:不同进程Process/线程Thread之间通信。
RabbitMQ:是一个开源的,在AMQP基础上完整的,可复用的企业级的消息系统 支持主流操作系统:Linux,Windows,Mac
支持主流语言:Java,Python,Ruby,.NET,PHP,c/c++,node.js
开发语言:Erlang – 面向并发的编程语言。
用途
- 降低耦合,通过消息队列实现系统解耦,解决过度RPC(Remote Procedure Call)的问题。
- 流量削峰, 设置流量缓冲池
- 强弱依赖梳理,将非关键调用链路的操作异步化,提升整体系统的吞吐能力
安装方法
- 下载epel源:
yum install -y epel-release
- 设置epel源为国内源:
sudo sed -e 's!^mirrorlist=!#mirrorlist=!g' \
-e 's!^#baseurl=!baseurl=!g' \
-e 's!//download.fedoraproject.org/pub!//mirrors.ustc.edu.cn!g' \
-e 's!http://mirrors\.ustc!https://mirrors.ustc!g' \
-i /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel-testing.repo
- 安装erlang语言包
yum -y install erlang
- 安装RabbitMQ
yum -y install rabbitmq-server
- 启动后台管理插件
进入Rabbitmq安装目录,运行rabbitmq-plugins enable rabbitmq_management
常用命令
- 启动/停止/重启/查看状态RabbitMQ
systemctl start/stop/restart/status rabbitmq-server
- 用户操作
// 新建用户
rabbitmqctl add_user {用户名} {密码}
// 设置权限
rabbitmqctl set_user_tags {用户名} {权限}
// 查看用户列表
rabbitmqctl list_users
// 为用户授权
添加 Virtual Hosts :
rabbitmqctl add_vhost <vhost>
// 删除用户
rabbitmqctl delete_user Username
// 修改用户的密码
rabbitmqctl change_password Username Newpassword
// 删除 Virtual Hosts :
rabbitmqctl delete_vhost <vhost>
// 添加 Users :
rabbitmqctl add_user <username> <password>
rabbitmqctl set_user_tags <username> <tag> ...
rabbitmqctl set_permissions [-p <vhost>] <user> <conf> <write> <read>
// 删除 Users :
delete_user <username>
// 使用户user1具有vhost1这个virtual host中所有资源的配置、写、读权限以便管理其中的资源
rabbitmqctl set_permissions -p vhost1 user1 '.*' '.*' '.*'
// 查看权限
rabbitmqctl list_user_permissions user1
rabbitmqctl list_permissions -p vhost1
// 清除权限
rabbitmqctl clear_permissions [-p VHostPath] User
用户操作举例
# 设置新用户lhx 密码123
rabbitmqctl add_user lhx 123
# 设置用户为administrator角色
rabbitmqctl set_user_tags lhx administrator
# 设置权限,允许对所有的队列都有权限
rabbitmqctl set_permissions -p "/" lhx ".*" ".*" ".*"
# 重启服务生效设置
systemctl restart rabbitmq-server
清空队列步骤
# 1.清空队列步骤
rabbitmqctl reset
# 2.需要提前关闭应用
rabbitmqctl stop_app
# 3.然后再清空队列,启动应用
rabbitmqctl start_app
# 4.此时查看队列rabbitmqctl
list_queues
查看基本信息
查看所有的exchange:
rabbitmqctl list_exchanges
查看所有的queue:
rabbitmqctl list_queues
查看所有的用户:
rabbitmqctl list_users
查看所有的绑定(exchange和queue的绑定信息):
rabbitmqctl list_bindings
查看消息确认信息:
rabbitmqctl list_queues name messages_ready messages_unacknowledged
查看RabbitMQ状态,包括版本号等信息:
rabbitmqctl status
端口信息
4369 -- erlang发现口
5672 --client端通信口,客户端连接端口
15672 -- 管理界面ui端口 需要安装management插件。
25672 -- server间内部通信口