在这篇文章中,我们将使用建立在Redis之上的BullMQ库,在Node.js中实现一个消息队列。我们将实现两个消息队列。一个用于为特定订单添加退款任务。 mkdir messaging_queuecd messaging_queuenpm initnpm i express bullmq -D步骤2:队列的实现首先,创建一个 refundQueue.js const { Queue } = require("bullmq");const refundQueue = new Queue("refund-queue", { connection: { const { Worker } = require("bullmq");const { refundProcess } = require(". 步骤6:Docker设置为了运行BullMQ的代码,我们需要在本地计算机上运行一个Redis服务器。因此,我们将使用Docker。
验证并解析,如果失败会抛出详细错误const config = envConfig.parse(processEnv);console.log(config.PORT); // 输出数字类型:8080BullMQ BullMQ 基于 Redis,提供了完善的消息队列功能,支持重试、延迟执行、优先级队列以及父子任务依赖。它完全基于 TypeScript 重写,比老牌的 Bull 更稳定,是处理后台任务的首选。 import { Queue, Worker } from 'bullmq';const connection = { host: 'localhost', port: 6379 };// 1. await new Promise(resolve => setTimeout(resolve, 1000));}, { connection });ioredis:Redis 客户端的标准答案既然提到了 BullMQ Zod 带来了类型安全,BullMQ 解决了异步处理,Execa 优化了脚本编写,而 ServBay 则解决了最基础但也最让人头疼的环境管理问题。
CVM S6(2核4G起步)稳定、弹性,可按需升配数据库TDSQL-C PostgreSQL版Serverless弹性计费,原生支持pgvector扩展缓存/队列云数据库Redis 7.0会话缓存 + BullMQ 1.3 创建Redis实例# 产品:云数据库Redis 7.0 标准版# 规格:1G内存(初期够用,可在线扩容)# 网络:与CVM同VPCRedis承担两个角色:• BullMQ消息队列的存储后端• 会话状态缓存 SSM:openclaw/redis-host}" port: 6379 password: "${SSM:openclaw/redis-password}"queue: type: "bullmq
别看是solo开发,技术选型可一点不含糊: • 前端:Next.js 15 + React 19 • 数据库:MySQL + Prisma ORM • 队列:Redis + BullMQ • 样式:Tailwind
BullMQ & Redis:存款、贷款、月度作业等所有特性共用一个作业队列。 Postgres 数据库,这里没有用到非关系型数据库的地方。
FileStore[(对象存储:S3 / MinIO)] API --> Auth[(认证/授权:OAuth2 / JWT)] API --> JobScheduler[(定时任务:Cron / BullMQ Redis:用于缓存 & 分布式锁 & 定时队列(如 BullMQ)。前端:React + Ant Design / Element UI(企业内常用),移动端优先 PWA 或小程序。
strong>数据存储: TypeORM + SQLite/PostgreSQL
Node.js 20 LTS 框架:NestJS 10 ORM:Prisma 认证:JWT + Passport.js API文档:Swagger/OpenAPI 3.0 缓存:Redis 任务队列:BullMQ