BullMQ -将作业添加到从不同服务到worker的队列中



我正在尝试找出可扩展的BullMQ实现的最佳架构。我们有许多不同的服务,它们将把作业提供给队列。在某些情况下,我们可能有多个不同的服务向同一个队列提供作业。

最初,我想在单个实例上包含所有的BullMQ实现,并提供一个简单的API,该API带有一个端点,可以接收要添加到队列中的作业。因此,对于任何想要将作业添加到队列的服务,它们只需命中特定的端点,作业就会被添加到队列中。

我想知道是否有一种替代方法可以在想要将作业添加到队列的各种服务上实例化一个BullMQ队列,然后让位于单独服务上的工作人员在准备执行时从队列中拾取作业?然后,这个"工作盒"可以根据需要水平扩展。

如果这种方法是可能的,我担心有多个服务将作业添加到同一个队列可能会产生什么影响——这会导致问题吗?还是BullMQ设计用于处理这种情况?

我发现很难找到有关BullMQ实现的标准"最佳实践"方法的信息。任何指导,非常感谢。谢谢。

多个服务将作业添加到同一队列方法是可以的。
下面是使用BullMQ API的方法:

const queue = new Queue('Cars');
await queue.add('paint', { color: 'red' });

注意这里的queue是facade类的一个实例,它作为一个api在Redis中向队列添加作业,而不是队列本身。
所以每个服务都有自己的facade实例是可以的,因为事实的来源是Redis。

最新更新