我需要帮助来了解Bull Queue(bull.js)如何处理并发作业。

假设我有10个Node.js实例,每个实例都实例化连接到同一Redis实例的Bull Queue:

const bullQueue = require('bull');
const queue = new bullQueue('taskqueue', {...})
const concurrency = 5;
queue.process('jobTypeA', concurrency, job => {...do something...});

这是否意味着在所有10个 Node 实例上全局最多存在5个(并发)并发运行的jobTypeA类型的作业?还是我误会了,并发设置是每个 Node 的实例?

如果一个Node实例指定不同的并发值会怎样?

我可以确定作业不会被多个Node实例处理吗?

最佳答案

TL; DR是:在正常情况下,作业仅被处理一次。如果出现问题(例如Node.js进程崩溃),则作业可能会被双重处理。

引用公牛的官方README.md:

关于javascript - Bull Queue并发问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54132187/

10-09 06:46