前言
消息队列是存储数据的一个中间件,可以理解为一个容器。生产者生产消息投递 到队列中,消费者可以拉取消息进行消费,如果消费者目前没有消费的打算,则消息队列会保留消息,直到消费者有消费的打算。
设计思路
生产者
- 连接 redis
- 向指定通道 通过 lpush 消息
消费者
- 连接 redis
- 死循环通过 brpop 阻塞式获取消息
- 拿到消息进行消费
- 循环拿去下一个消息
Redis
安装及启动
此步骤各位道友随意就好,不一定要用docker 。只要保证自己能连接到redis 服务即可。
# 使用docker 拉取redis 镜像 docker pull redis:latest # 启动redis服务 # --name 后面是容器名字方便后续维护和管理 # -p 后面是指映射容器服务的 6379 端口到宿主机的 6379 端口 docker run -itd --name redis-mq -p 6379:6379 redis # ============ docker 常用基本操作(题外话) ================= # 拉取镜像 docker pull 镜像名称 # 查看镜像 docker images # 删除镜像 docker rmi 镜像名称 # 查看运行容器(仅为启动中的) docker ps # 查看运行容器(包含未启动) docker ps -a # 启动容器 docker start 容器名称/容器id # 停止容器 docker stop 容器名称/容器id 复制代码
Nodejs连接
初始化工程
# 创建文件夹并进入 mkdir queue-node-redis && cd queue-node-redis # yarn 初始化 yarn init -y # 下载redis包, # 指定版本的原因是尽量减少道友们的失败几率 毕竟前端的工具迭代太快了 yarn add redis@4.2.0 复制代码
创建 lib 与 utils 目录
├── .gitignore ├── lib ├── package.json ├── utils │ └── redis.js └── yarn.lock 复制代码
utils/redis.js
const redis = require("redis"); const redisCreat