RabbitMQ 消息队列

1. 消息队列是什么?

当用户注册成功后,就发送邮件。当邮件发送成功了,接口才会提示注册成功信息。但由于发送邮件,依赖于其他厂商的服务,有可能他们的接口会非常耗时。那么用户就一直要等着邮件发送成功了,才提示注册成功。因为耗时很长,这样就会造成很糟糕的体验。

然后大家想一想,我们到底有没有必要等着邮件发送完成呢?就好比大家去邮局寄信,当你把信丢入邮筒里,你需要一直等着信送到别人手里,然后你再离开吗?

当然不需要,只要将信丢入邮筒,我们人就可以离开了。因为你知道,在将来的某个时候,你的信就会被寄到收件人手里。

消息队列,就好比是这里寄信的过程!消息队列由三部分构成:

在这里插入图片描述

  • 生产者(Producer):创建并发送消息,相当于去邮局寄信的人。
  • 队列(Queue):用来存放消息的,将消息从生产者传递到消费者,就相当于邮局了。邮局收到你的任务后,它去处理是需要排队的。按照先进先出的原则,需要等其他先来的任务处理完了,才会处理你的任务。
  • 消费者(Consumer):接收并处理消息的人。当邮局把信送到他手里了,收到消息了,最终处理任务的人。

还是以我们注册功能为例。当用户注册成功了,我们就通知RabbitMQ,你去发个邮件,然后就直接提示用户注册成功。我们完全没有必要等待邮件发送完成。

接着再写一个程序去接收消息,当它收到消息了,就去执行发邮件任务了。

所以,生产者、消费者,都是我们要写的程序。一个负责提交任务,另一个负责处理任务。互相之间通信,就靠中间的RabbitMQ。

2. 安装

2.1. 使用 Docker

当然,我最推荐的还是用Docker,因为太方便了,大家打开docker-compose.yml。增加RabbitMQ的配置,注意缩进非常重要,一定要和之前的MySQL和Redis的配置对齐

services:
  mysql:
    # ....
  redis:
    # ....
  rabbitmq:
    image: rabbitmq:4.0-management
    ports:
      - "5672:5672"
      - "15672:15672"
    volumes:
      - ./data/rabbitmq:/var/lib/rabbitmq # 持久化数据
    environment:
      RABBITMQ_DEFAULT_USER: admin
      RABBITMQ_DEFAULT_PASS: xw

  • 我们这里使用的RabbitMQ版本号是:4.0
  • 将RabbitMQ运行的默认端口567215672,映射到本机上。
  • 其中15672RabbitMQ自带的管理后台端口号
  • 接着将RabbitMQ的用来持久化数据的备份数据映射到项目根目录的data/rabbitmq目录中。
  • 最下面的是RabbitMQ用来连接的账号密码,大家可以根据需要自己设置。
    完成后,命令行,再次运行
docker-compose up -d

这样Docker,就会自动下载,并启动好RabbitMQ。
在这里插入图片描述

2.2. 直接安装

对于部分Windows上用不了Docker的同学,那就有点麻烦了。因为既要安装Erlang,又要安装RabbitMQ。这里附上下载地址:

2.3.1 安装完ErlangRabbitMQ后,添加环境变量

打开环境变量设置窗口: 右键点击 “此电脑”,选择 “属性”。 在弹出的窗口中,点击 “高级系统设置”。 在 “系统属性” 窗口中,点击 “环境变量” 按钮。 添加 RabbitMQ 命令路径到系统的 Path 变量: 在 “系统变量” 列表中找到 “Path” 变量,选中它并点击 “编辑” 按钮。 在弹出的 “编辑环境变量” 窗口中,点击 “新建”,然后将 RabbitMQ 的 sbin目录路径添加进去,
例如 C:\Program Files\RabbitMQServer\rabbitmq_server-<version>\sbin。注意要将 替换为你实际安装的 RabbitMQ 版本号。 点击 “确定” 保存设置,依次关闭所有窗口 具体选择你自己安装的路径>。

2.3.2 通过命令行(管理员)安装rabbitmq_management 插件

RabbitMQ 的管理界面依赖于rabbitmq_management 插件

rabbitmq-plugins enable rabbitmq_management
2.3.3 通过命令行(管理员)运行

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值