我需要帮助来了解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/