Ruby
Rails
sidekiq

sidekiqでqueueの中身を確認する方法

More than 3 years have passed since last update.

APIドキュメントにも明には書いてなかった気がするので備忘録として。

※以下ではActiveJobを使っています。


queueに入っているJobの数を確認する。

queue名を指定して Sidekiq::Queue.new すると色々ゴニョゴニョ出来るみたい。

以下は default というqueueを取得する例。

[60] pry(main)> queue = Sidekiq::Queue.new('default')

[61] pry(main)> queue.size


queueの各Jobの内容を確認する

queue.first で最初のJobの中身が確認できるようなので見てみる。

[33] pry(main)> queue.first

=> #<Sidekiq::Job:0x007fac2ca82ca0
@item=
{"class"=>"ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper",
"wrapped"=>"ActionMailer::DeliveryJob",
"queue"=>"mailers",
"args"=>
[{"job_class"=>"ActionMailer::DeliveryJob",
"job_id"=>"e02f1e74-aef4-4ea1-b374-e93da431a949",
"queue_name"=>"mailers",
"arguments"=>["HogeMailer", "user_created", "deliver_later", {"_aj_globalid"=>"gid://app/User/1"}]}],
"retry"=>true,
"jid"=>"3b19683d5a8dbc085b1302c6",
"created_at"=>1444714057.8843222,
"enqueued_at"=>1444714057.884371},
@queue="mailers",
@value=
"{\"class\":\"ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper\",\"wrapped\":\"ActionMailer::DeliveryJob\",\"queue\":\"mailers\",\"args\":[{\"job_class\":\"ActionMailer::DeliveryJob\",\"job_id\":\"e02f1e74-aef4-4ea1-b374-e93da431a949\",\"queue_name\":\"mailers\",\"arguments\":[\"HogeMailer\",\"user_created\",\"deliver_later\",{\"_aj_globalid\":\"gid://app/User/1\"}]}],\"retry\":true,\"jid\":\"3b19683d5a8dbc085b1302c6\",\"created_at\":1444714057.8843222,\"enqueued_at\":1444714057.884371}">

上記から、各Jobの中身によって色々集計変えたいとか処理変えたいとか何かしたいだったら、以下のようにすれば良さそう

queue = Sidekiq::Queue.new('default')

queue.each do |q|
if q.args.first["arguments"].include?('hogehoge')
puts hogehoge
end
end