🖥

#Rails + shoryuken gem + #AWS SQS でリトライ処理の動作確認をする

に公開

ランダムに失敗するジョブを作っておく

class ShoryukenRandomFailureJob < ApplicationJob
  queue_as :example1
  queue_as :example2

  def perform(message)
    if rand(1..3) <= 1
      puts '-' * 100
      puts 'JOB WOKED'
      puts '-' * 100
      puts "message: #{message}"
      puts '-' * 100
    else
      raise 'Job Failed'
    end
  end
end

ジョブを実行する

bundle exec rails runner 'ShoryukenRandomFailureJob.perform_later("ABC")'

Workerで例外が確認できる

image

AWS SQS のコンソールで処理中のメッセージが増える

image

いずれジョブが成功する

image

Workerがメッセージ = ジョブを自動削除して、処理中のメッセージ数が0になる

image

ただし shoryuken worker の設定で自動削除を有効化している場合に限る

class ShoryukenWorker
  include Shoryuken::Worker

  shoryuken_options queue: 'example1', auto_delete: true
  shoryuken_options queue: 'example2', auto_delete: true
  shoryuken_options queue: 'example3', auto_delete: true
end

NOTE

  • shoryuken的にリトライをしているか、SQS的にリトライをしているかはまだ不明

Original by Github issue

https://github.com/YumaInaura/YumaInaura/issues/2464

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2019-09-17

Discussion