2017-07-25 119 views
2

我在线阅读一些教程,告诉我们使用ActiveJob和Sidekiq。但我不知道为什么我们应该这样做。我看到Sidekiq具有ActiveJob所具有的所有功能。与Sidekiq一起使用ActiveJob与Sidekiq相比的优势

此外,在Sidekiq文件:here

警告:通过做工作,通过ActiveJob重试,你失去了很多 Sidekiq功能:

  1. 的Web UI可见性(在试片会空)
  2. 您无法使用Sidekiq :: RetrySet API迭代重试。
  3. Sidekiq的日志不会包含任何故障或回溯。
  4. 错误将不会被报告给Sidekiq的全局错误处理程序
  5. 许多高级的Sidekiq功能(例如批次)不会与AJ重试一起使用。

这是一个信号莫名其妙地让我觉得我们不应该用ActiveJob使用Sidekiq。我了解ActiveJob的错误吗?使用ActiveJobs和sidekiq有什么优势?

感谢

+1

该wiki页面只是告诉你不要使用ActiveJob的重试,就这些了。它不会告诉你不要使用ActiveJob。 –

+1

@SergioTulentsev非常感谢。根据你的评论和Tony Vincent的回答,我可以理解一张照片。在你看来,你更喜欢在SIdekiq之上使用ActiveJob吗? (因为在这种情况下,我们必须接受这个解决方案中的一些弱点),例如重试工作。谢谢 –

+1

我使用ActiveJob over sidekiq,是的。 –

回答

2

从轨ActiveJob guide

主要的一点是要确保所有的Rails应用都会有一个适当的工作 基础设施。然后,我们可以拥有框架功能和其他构建在其上的宝石,而不必担心各种作业运行者之间的差异,例如延迟作业和 Resque。那么,挑选你的排队后端变得更加关注于操作 。而且你可以在不用 不得不重写你的工作之间进行切换。

基本上,ActiveJob所做的是标准化作业队列的API接口。这将帮助您轻松地从一个工作后端更改为另一个工作。

当您在ActiveJob中使用Sidekiq时,您可以从sidekiq提供的好东西中受益,但真正的好处是当您发现另一个queuer最适合您的应用程序时,ActiveJob允许您切换到您选择的工作队列一个班轮

# application.rb 
config.active_job.queue_adapter = :sidekiq 
+0

非常感谢。但是如果我们在sidekiq上使用ActiveJob,那么这些重试作业(在sidekiq文档中提到)的缺点如何呢?你认为我们应该更喜欢在这种情况下使用ActiveJob(并失去了一些其他有用的功能)?谢谢。 –

+0

@TrầnKimDự完全取决于你自己决定。问问你自己是否真的需要Sidekiq的重试标签?你需要Sidekiq批处理等。如果答案是肯定的,请使用sidekiq,毕竟sidekiq是一个维护良好的项目 –

+0

@TrầnKimDự如果您正在部署到heroku,则可以在与应用程序相同的服务器上使用suckerpunch,但sidekiq需要另一个工作人员。 –

相关问题