我正在將使用sidekiq製作的後臺作業處理服務遷移到shoryuken,它基於Amazon SQS。 隨着sidekiq您可以通過使用sidekiq_retry_in
定製重試模式:使用Shoryken(Amazon)SQS定製重試延遲(ruby)
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
改變延遲,但documentation僅介紹如何設置固定值:使用retry_count
class MyWorker
include Shoryuken::Worker
shoryuken_options queue: 'default', retry_intervals: [360, 1200, 3600] # 5.minutes, 20.minutes and 1.hour
end
我需要以同樣的方式定製延遲重試與sidekiq,方法根據外部數據返回不同的值。這是可能的還是確實存在一個解決方法來做到這一點與shoryuken?