🖥

#AWS SQS の Dead Letter Que に送られたメッセージを #Ruby の shoryuken gem の Worker

2019/09/19に公開
  • rails関係なし
  • AWS SQS の DeadLetterQue には通常のキューで処理に失敗したメッセージが送られるが、それをさらにWorkerで処理して「メッセージ受信可能」->「処理中」->「削除」の状態に遷移させる。
  • コマンドに -q オプションでキューの名前を指定して、Worker の shoryuken_options にも同じキュー名を書いておかなければいけなさそう?
  • 特に何も perform で処理をさせない場合は、ruby の Worker class は要らなそう

env

export AWS_ACCESS_KEY_ID=YYYYYYYYYY
export AWS_SECRET_ACCESS_KEY=ZZZZZZZZZZZ
export AWS_REGION=us-east-2

AWS console

コンソールでDeadLetterQueの名前がわかる (こいつ、どこで生まれるんだろう。最初からあるんだっけ?)

image

shoryuken_worker.rb

class ShoryukenWorker
  include Shoryuken::Worker

  shoryuken_options queue: 'XXX', auto_delete: true

  def perform(sqs_msg, name)
    puts '-' * 100
    puts 'WORKER'
    puts '-' * 100
    puts name
    puts sqs_msg
  end
end

Command

bundle exec shoryuken -q  XXX --require ./shoryuken_worker.rb

送信テスト

AWS console のキューの操作で、DeadLetterQueにも直接メッセージを送信可能

image

Worker の結果

image

Original by Github issue

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

チャットメンバー募集

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

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

Twitter

https://twitter.com/YumaInaura

公開日時

2019-09-19

Discussion