【发布时间】:2019-06-05 12:42:42
【问题描述】:
我需要帮助了解 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 个节点实例中最多将有 5 个(并发)并发运行的类型为 jobTypeA 的作业?还是我理解错了,并发设置是per-Node instance?
如果一个 Node 实例指定不同的并发值会怎样?
我可以确定作业不会被多个节点实例处理吗?
【问题讨论】:
-
这里说的是 BullMQ(看起来像一个抛光的 Bull 重构),并发因子是每个 worker,所以如果 10 的每个实例有 1 个并发因子为 5 的 worker,你应该得到 50 global并发因素,如果一个实例具有不同的配置,它可能只会收到更少的作业/消息,假设它比其他机器更小,至于你的最后一个问题,Stas Korzovsky 的回答似乎很好地涵盖了你的最后一个问题。
标签: javascript node.js concurrency bull.js