我正在网上阅读一些教程,告诉我们使用Sidekiq的ActiveJob . 但我不知道为什么要这样做 . 我看到Sidekiq拥有ActiveJob拥有的所有功能 .
此外,在Sidekiq文件:here
警告:通过ActiveJob进行作业重试,会丢失很多Sidekiq功能:Web UI可见性(Retries选项卡将为空)您无法使用Sidekiq :: RetrySet API迭代重试 . Sidekiq的日志不包含任何失败或回溯 . 不会向Sidekiq的全局错误处理程序报告错误许多高级Sidekiq功能(例如批处理)将无法与AJ重试一起使用 .
这是一个让我觉得我们不应该将Sidekiq与ActiveJob一起使用的信号 . 我对ActiveJob的理解有误吗?将ActiveJobs与sidekiq一起使用时有什么优势吗?
谢谢
2 回答
来自rails ActiveJob guide
基本上,ActiveJob所做的是为作业队列标准化API接口 . 这将帮助您轻松地从一个作业后端更改为另一个作业 .
当您使用Sidekiq和ActiveJob时,您可以从sidekiq提供的好东西中受益,但真正的问题是当您发现另一个最适合您的应用程序时,ActiveJob允许您通过一个班轮切换到您选择的工作机
至于我,ActiveJob的主要功能是支持GlobalId . 相比:
Sidekiq :
ActiveJob :
这么方便,更干净!
关于重试 - 是的,它知道为什么在ActiveJob中忽略了为每个作业配置自己的参数的底层系统可能性的功能 . 至于解决方法,可以使用gem activejob-retry:
这会禁用ActiveJob 's retries while Sidekiq'重试仍然有效 . 's possible to configure sidekiq'在配置文件中重试's possible to configure sidekiq'