目前,我正在做一个带bull队列的NestJS项目。在我的控制器中,我有一个get函数来接收来自前端的请求。根据请求,我将发送一个gRPC调用来从其他微服务中检索数据。我希望让gRPC调用函数与bull队列一起工作。因此,在get函数中,我将gRPC调用函数放入producer中。但是,在使用者中执行gRPC调用函数之后,我无法找到一种方法将检索到的数据返回到之前的get函数,以便将数据发送回前端。任何帮助都将不胜感激。
eyh26e7m1#
你不能,使用队列的主要目的是不阻塞任何传入的请求。您可以做的是,返回bull queue的作业ID,然后前端开发人员可以跟踪它的响应,或者使用一些事件驱动的方法或WebSocket,这样您就可以告诉他刷新它的响应
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);
2条答案
按热度按时间eyh26e7m1#
你不能,使用队列的主要目的是不阻塞任何传入的请求。
您可以做的是,返回bull queue的作业ID,然后前端开发人员可以跟踪它的响应,或者使用一些事件驱动的方法或WebSocket,这样您就可以告诉他刷新它的响应
6qqygrtg2#
你真的可以!
下面是一个例子:
那么在你的服务中: