我有一个队列,用于一个worker(bullmq)使用的所有作业,即当轮到worker时,worker处理队列中的项目。我在一个特定组的队列中添加了n个测试(比如x),并等待我的工作进程处理它们。工人完成我的工作后,我可以听 completed
我的队列的事件(bullmq的功能),以找出哪个作业已完成,并从工作进程获取它们的返回值。我的问题是如何确定事件侦听器中完成的测试是特定组中的最后一个测试。
我最初的方法是在redis中存储失败和通过测试的数量 ("group_id:passed", "group_id:failed")
然后检查事件监听器中是否有两个加起来就是测试总数。但是这种方法没有成功,因为每次测试都会触发这种情况
requestQueueEvents.on("completed", async (callback: any) => {
const cli = await requestQueueEvents.client; // Reddis client
const passedCountString = await cli.get(`${groupId}:passed`);
const failedCountString = await cli.get(`${groupId}:failed`);
if (parseInt(passedCountString ? passedCountString : "0") + parseInt(failedCountString ? failedCountString : "0") === testCount) {
console.log("Last test of this groupId");
}
}
注意:可以有多个工人同时处理同一组的不同测试
如果你有任何建议或不同的架构,可以帮助我做到这一点,请张贴在下面的一些想法。提前谢谢
暂无答案!
目前还没有任何答案,快来回答吧!