我正在将使用sidekiq制作的后台作业处理服务迁移到基于Amazon SQS的shoryuken。使用sidekiq,您可以使用以下方法自定义重试模式:sidekiq_retry_in
class WorkerWithCustomRetry
include Sidekiq::Worker
sidekiq_options :retry => 5
sidekiq_retry_in do |count|
retry_count(count)
end
def self.retry_count(count)
...
end
end
在我的例子中,retry_count
返回基于外部配置的下一次重试的延迟。使用shoryuken时,只要消息未被消费者应用程序删除,SQS 就会自动处理重试。但是使用shoryuken,您可以通过使用更改延迟,retry_intervals
但文档仅说明如何设置固定值:
class MyWorker
include Shoryuken::Worker
shoryuken_options queue: 'default', retry_intervals: [360, 1200, 3600] # 5.minutes, 20.minutes and 1.hour
end
我需要使用与sidekiq相同的方式自定义重试延迟,使用retry_count
根据外部数据返回不同值的方法。这是可能的还是存在使用shoryuken做到这一点的解决方法?