如何中止公牛队列中的特定任务?

Bes*_*2Go 3 priority-queue message-queue job-queue mongodb node.js

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

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

提前致谢,我将不胜感激有关此的所有信息。

ken*_*tor 5

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

但是,您需要做的是Promise<Job>将返回的内容存储Queue.add()Map<string, Map<string, Promise<Job>>. 字符串将是_id您的用户的,并且Promise<Job>[]是一个包含特定用户的所有排队作业的数组。一旦 Job 得到解决(您可以使用 等待已解决的作业Job.finished()),您需要从 Map 中删除 Promise。

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