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

时间:2015-12-24 10:03:22

标签: ruby-on-rails redis sidekiq

我在两个不同的实例上运行了两个Rails应用程序(比如Server1Server2),但它们有相似的代码并共享相同的Postgresql DB。

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

我已经单独使用Redis服务器并在Server1上运行,它与Server2共享Redis。

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

我的问题是

  • Server1上的Sidekiq进程如何知道在Redis中推送作业?

  • Sidekiq进程是否持续在Redis服务器上检查是否有任何新作业,或者Redis服务器是否正在向Sidekiq进程暗示新作业?

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

有人可以澄清Sidekiq从Redis服务器获取工作的流程吗?

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

1 个答案:

答案 0 :(得分:2)

Sidekiq uses redis命令名为BRPOP

此命令从列表中获取一个元素(这是您的作业队列)。如果列表为空,则等待元素出现,然后弹出/返回它。这也适用于多个队列。

所以不,sidekiq不会轮询redis而redis不会将通知推送到sidekiq。