Sidekiq 服务器进程如何从 Redis 中的队列中拉取作业?

How the Sidekiq server process pulls jobs from the queue in Redis?

我在两个不同的实例上有两个 Rails 应用程序 运行(比方说 Server1Server2),但它们具有相似的代码并共享相同的 Postgresql 数据库.

我安装了 Sidekiq 并从两台服务器推送队列中的作业,但我 运行 Sidekiq 进程仅在 Server1

我有一个 Redis 服务器及其 运行 在 Server1 上,它与 Server2 共享 Redis。

如果从 Server2 推送的作业在 Server1 的 Sidekiq 进程中得到处理,这正是我真正想要的。

我的问题是

我对此感到困惑和惊讶!!!

谁能解释一下 Sidekiq 从 Redis 服务器获取作业的过程?

对我这样的新手会有帮助。

Sidekiq uses redis command named BRPOP.

此命令从列表(这是您的作业队列)中获取一个元素。如果列表为空,它会等待元素出现,然后 pops/returns 它。这也适用于同时处理多个队列。

所以不,sidekiq 不轮询 redis,redis 也不向 sidekiq 推送通知。