NodeJS 使用NestJS Bull队列时如何获取返回的数据?

zrfyljdw  于 2022-12-18  发布在  Node.js
关注(0)|答案(2)|浏览(275)

目前,我正在做一个带bull队列的NestJS项目。在我的控制器中,我有一个get函数来接收来自前端的请求。根据请求,我将发送一个gRPC调用来从其他微服务中检索数据。我希望让gRPC调用函数与bull队列一起工作。因此,在get函数中,我将gRPC调用函数放入producer中。但是,在使用者中执行gRPC调用函数之后,我无法找到一种方法将检索到的数据返回到之前的get函数,以便将数据发送回前端。
任何帮助都将不胜感激。

eyh26e7m

eyh26e7m1#

你不能,使用队列的主要目的是不阻塞任何传入的请求。
您可以做的是,返回bull queue的作业ID,然后前端开发人员可以跟踪它的响应,或者使用一些事件驱动的方法或WebSocket,这样您就可以告诉他刷新它的响应

6qqygrtg

6qqygrtg2#

你真的可以!
下面是一个例子:

import { Process, Processor } from '@nestjs/bull';
import { Job } from 'bull';

@Processor('myProcessor')
export class MyProcessor {
  @Process('myProcess')
  async handleMyProcess(job: Job<{ myInput: string }>) {
    await new Promise((resolve) => setTimeout(resolve, 5000));
    return 'hello world !';
  }
}

那么在你的服务中:

const compressJob = await this.myQueue.add('myProcess', {
      myInput: 'foo',
    });

    const test = await compressJob.finished();
    console.log(compressJob, test);

相关问题