除了“生成”它们之外,我如何从应用程序中的“延迟作业”队列“消耗”作业

时间:2014-03-13 14:56:43

标签: ruby-on-rails ruby-on-rails-3 delayed-job

我有一个'主要' rails app需要将一些工作卸载到某些命名的延迟作业队列。我希望将所有处理这些作业的逻辑保存在一个单独的应用程序中,该应用程序将在与主Web应用程序服务器不同的服务器上运行。它将连接到同一个数据库,但只定义了一小部分模型,只需要处理这些工作所需的内容。

当我排队工作时,有没有办法只排队记录的id来进行操作?结合队列名称,我认为应该足够让工人知道该怎么做。或者,如果需要提供一个类,我是否可以在主应用程序中使用该类的虚拟精简版本,并在单独的“工作人员”类的版本中使用实际的实现逻辑。应用?

1 个答案:

答案 0 :(得分:1)

实际上,您上面描述的内容是正确的: 您希望对ID进行排队,有时需要其他必需信息来标识您要从数据库中提取的记录,而不是对象,尤其是如果它是ActiveRecord::Base对象。

排队对象是有问题的,可能会导致问题。检查我的答案:

https://stackoverflow.com/a/21751030/226255

您可以通过在控制台中执行以下操作来测试第二个应用程序是否正确拉动:(确保先将Delayed::Job推送到队列中)

Delayed::Job.first.invoke_job