【发布时间】:2015-08-05 16:09:10
【问题描述】:
我目前正在努力将我的环境从 Heroku 移出,我的应用程序的一部分正在运行一个时钟进程,该进程启动 Sidekiq 后台作业。
据我了解,Sidekiq 由一个客户端和一个服务器组成,客户端发送作业以排队到 Redis 中,服务器拉出队列的请求并处理它们。我现在正在尝试将我的应用程序拆分为 Docker 上的以下容器: - Redis 容器 - 时钟容器(使用发条宝石) - 工人容器 - Web 应用程序容器(Rails)
但是,我不确定应该如何拆分 Sidekiq 服务器和客户端。本质上,时钟容器需要在其上运行 Sidekiq,以便客户端可以每隔一段时间将作业发送到 Redis 队列。但是,工作容器也应该在它们上运行 Sidekiq(尽管是服务器),以便它们可以处理作业。我认为在不同容器之间划分职责应该是很可能的,因为 Heroku 允许您将其划分为各种 dyno。
我可以想象一种方法是分配时钟容器来拉出一个不存在的队列,这样它就不会从队列中拉出任何作业,然后将工作人员设置为拉出一个存在的队列.然而,这对我来说似乎不是最理想的方法,因为它仍会检查这个不存在的队列中的新作业。
关于如何着手解决此问题的任何提示或指南?
【问题讨论】:
标签: ruby-on-rails docker containers sidekiq clockwork