组成说明
- Broker:消息队列服务进程, 改进程包括2部分: Exchange和Queue.
- Exchange:消息队列交换机, 按一定的规则将消息路由转发到某队列, 对消息进行过滤.
- Queue:消息队列, 存储消息队列, 消息到达队列并转发给指定的消费方.
- Producer:消息生产者, 即生产客户端, 生产客户端将消息发送到MQ.
- Consumer:消息消费者, 即消费方客户端, 接收MQ转发的消息.
发送消息
- 生产者和Broker建立TCP连接.
- 生产者和Broker建立通道.
- 生产者通过通道消息发送给Broker, 由Exchange将消息转发.
- Exchange将消息转发到指定的Queue(队列).
接收消息
- 消费者和Broker建立TCP连接.
- 消费者和Broker建立通道.
- 消费者监听指定的Queue(队列).
- 当有消息到达Queue时Broker默认将消息推送给消费者.
- 消费者接收到消息.
工作模式
- Work queues 工作队列 使用轮询
- Publish/Subscribe 发布
- Routing 路由 routingKey 相同匹配
- Topics 通配符匹配
- Header Header转发器
- RPC 远程过程调用
Linux安装RabbitMQ
使用 CentOS 安装, 其它Linux系统看官网.
# 下载安装包
wget https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.8.3/rabbitmq-server-3.8.3-1.el7.noarch.rpm
# 安装
rpm -ivh rabbitmq-server-3.8.3-1.el7.noarch.rpm --nodeps
# 依赖问题
# socat 被 rabbitmq-server-3.8.3-1.el7.noarch 需要
yum install socat
# 开启用户远程访问
cp /usr/share/doc/rabbitmq-server-3.8.3/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config
vim /etc/rabbitmq/rabbitmq.config
loopback_users = none
# 启动/停止
systemctl start rabbitmq-server
systemctl stop rabbitmq-server
systemctl restart rabbitmq-server
systemctl status rabbitmq-server
# 启动失败查看原因
journalctl -xe
# 报错/usr/lib/rabbitmq/bin/rabbitmq-server:行187: erl: 未找到命令
vim rabbitmq-server
ERL_DIR=/usr/local/erlang/bin/
# 开启web界面
rabbitmq-plugins enable rabbitmq_management
systemctl restart rabbitmq-server
# 默认登录用户名和密码都是:guest http://192.168.123.122:15672
# 设置开机启动
chkconfig rabbitmq-server on
Docker安装RabbitMQ
# 拉取镜像
docker pull docker pull rabbitmq:management
# 方式一:默认guest 用户, 密码也是 guest
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq:management
# 方式二:设置用户名和密码
docker run -d --hostname my-rabbit --name rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password -p 15672:15672 -p 5672:5672 rabbitmq:management
# 访问管理后台 http://localhost:15672 guest
Windows安装RabbitMQ
windows下安装,先安装好erlang
环境,可以使用 scoop 进行安装。
官网下载:https://www.rabbitmq.com/install-windows-manual.html
配置相关:https://www.rabbitmq.com/relocate.html
首先添加环境变量RABBITMQ_BASE
。
注意,如果想要自定义存储的目录,一定要先添加,否则安装之后修改不了。
下载好压缩包后解压,使用命令行进入到该目录下。
# 安装服务
sudo .\rabbitmq-service.bat install
# 移除服务
sudo .\rabbitmq-service.bat remove
# 启动后台管理界面
.\rabbitmq-plugins enable rabbitmq_management
# 启动服务
.\rabbitmq-service.bat start
# 或者这样
sudo net start RabbitMQ
sudo net stop RabbitMQ
# 查看状态
.\rabbitmqctl.bat status
# 查看启动/停止中的服务
.\rabbitmqctl.bat start_app
.\rabbitmqctl.bat stop_app
# Error: unable to perform an operation on node 'rabbit@DevLGQ'...
# 发现启动失败,把
# C:\Users\lgq\.erlang.cookie
# 复制到
# C:\Windows\System32\config\systemprofile\.erlang.cookie
# 不安装服务后台启动
.\rabbitmq-server.bat -detached
# 添加 admin 用户并设置密码
.\rabbitmqctl add_user admin lgq2020
# 设置 admin 用户为administrator角色
.\rabbitmqctl set_user_tags admin administrator
# 设置 admin 用户的权限,指定允许访问的vhost以及write/read
.\rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
# :查看vhost(/)允许哪些用户访问
.\rabbitmqctl list_permissions -p /
# 查看用户列表
.\rabbitmqctl list_users
# 重启RabbitMQ,然后用设置账户和密码登录。
# 访问后台管理界面
# http://localhost:15672/#/