bull用法
1. bull 用的是 Redis 的队列服务, 所以要安装 redis 数据库, 安装方法看官网.
2. 安装 @nestjs/bull
和 bull
包
npm install --save @nestjs/bull bull
3. 根AppModule
中导入BullModule
注意, 这个注册方法和官网上有点不一样. 这里直接用到
forRoot
与 官网的 registerQueue
不一样, 这个 registerQueue
我放到模块里面注册列表去了, 这里只做 redis 数据库的连接4. 可以添加一个 QueueModule
做队列的事, 做统一管理
在
QueueModule
注册队名就行了, 数据库连接不用管.BullModule.registerQueue({ name: QueueName.create }, { name: QueueName.flow })
name 是个 string, 我为了统一处理, 用了 emum 格式.
5. 消费者
providers 里, 在加入消费者, 也就是干活那个类 CreateProcessor, 一个队列指定一个消费者
6. 生产者 QueueService
注入到 Service 中, 然后调用就行了
@InjectQueue(QueueName.flow) private flowQueue: Queue
这个类中, 可以添加任务到队列, 查看队列状态, 重试等等.
当然还有事件监听者, 这个在这里就不细说了, 直接看官方文档吧, 都差不多. 更多的细节, 上面并没有说到, 可以直接看官方文档. 这里主要是和官方文档的不同之处吧, 另外, 这个 bull 其实可以注册到任一个模块去调用. 不过我觉得放在一直更好管理, 其它模块用到里, 直接引入调用.
Loading...