为rails(比如Resque)部署后台工作器到CloudFoundry



目前正在用Rails构建一个实时仪表板,它需要一个后台处理来保持数据的轮询,以保持仪表板的更新。我能够通过Resque, Resque- scheduler和Redis Server实现这一点,并且在本地工作良好。所有的代码都嵌入到Rails应用程序中,例如,如果用户访问仪表板页面,在dashboard_controller中,我像这样对作业进行排队

Resque.enqueue(BackgroundJob, params)

我有工作执行的工作从app/worker/background_job.rb

class BackgroundJob
  @queue = :backgroundq
  def self.perform
    < PERFORM CODE HERE>
  end
end

问题:

当我必须部署到Cloudfoundry时,它指示我以不同的名称部署相同的代码两次1。作为Rails应用程序(Web Process)作为一个Ruby无路由应用,用于后台worker绑定到云上的同一个Redis服务。我不明白这里的过程,如果他们生活在两个不同的应用空间,他们如何相互沟通?因为我需要来回交流大量的数据。当然,我缺乏一些基本的应用程序体系结构设计。有人能解释一下我该怎么做吗?

是的,你错过了一些东西,因为rails应用程序和worker是不同的进程。当你调用Resque.enqueue(BackgroundJob, params)时,你通过redis与worker通信。因此,如果你想要沟通,你必须使用类似redis或postgres或事件文本文件。

你能得到更多关于你的任务的信息吗?

最新更新