sidekiq 如何防止多个工人使用相同的工作 ID?

coo*_*eze 3 ruby-on-rails sidekiq

如果我有多个服务器作为 sidekiq 工作,sidekiq 如何确保在轮询 redis 时不会为 2 个服务器提供相同的作业来处理?

有人可以指出代码库,因为我真的很想了解幕后发生的事情。

Mik*_*ham 5

BRPOP 是原子的,它从列表中弹出一个项目并将其处理给调用者。如果一个列表有三个元素,1000 个调用者可以同时调用 brpop。三个调用者将获得一个元素,另一个 997 将阻塞,等待一个元素。

https://redis.io/commands/brpop