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