gpt4 book ai didi

node.js - 如何中止公牛队列中的特定任务?

转载 作者:可可西里 更新时间:2023-11-01 10:02:14 25 4
gpt4 key购买 nike

根据这个包https://github.com/OptimalBits/bull是否有可能中止“等待队列”中的某个任务?我的用例如下:

我有一个 mongodb 集合“users”和一个集合“friendship”,我在其中存储两个用户的姓名和头像。所以我只需要一个查询就可以获取某个用户的好友列表。当用户更改他的头像时,我必须更新“友谊”集合中该用户的所有文档。这是一个性能无关紧要的操作,因为我希望它在后台执行并且一致性对于这个用例并不重要。但是当用户在短时间内多次更新他的头像时,我想取消所有引用旧任务(用于更新友谊集合)除了最新的。这与公牛有可能吗?

提前致谢,如果能提供相关信息,我将不胜感激。

最佳答案

查看Bull reference你会发现有一个Job.remove()方法。由于您没有发布任何代码,我只能猜测它的样子。因此,我已经描述了您可以做什么。

然而,您要做的是存储 Promise<Job>这将由 Queue.add() 返回例如在 Map<string, Map<string, Promise<Job>> .字符串将是 _id您的用户和 Promise<Job>[]是一个包含特定用户的所有排队作业的数组。解决作业后(您可以使用 Job.finished() 等待已解决的作业),您需要从 map 中删除 Promise。

每当用户更改他的头像时,如果您需要删除任何工作,您就可以查看您的 map 。上面提到的 Map 中的值是另一个 Map(key 是一个字符串,代表 JobId ),可以很容易地通过 JobId 删除 Jobs。这听起来可能有点复杂,但不要害怕 - 如果您了解 map 的工作原理,那应该不是问题:-)。

关于node.js - 如何中止公牛队列中的特定任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47551454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com