38 lines
981 B
Ruby
38 lines
981 B
Ruby
# encoding: UTF-8
|
|
# frozen_string_literal: true
|
|
|
|
namespace :failures do
|
|
desc 'Fetch Trade Execution Errors'
|
|
task trade_errors: :environment do
|
|
|
|
conn = Bunny.new AMQP::Config.connect
|
|
conn.start
|
|
|
|
ch = conn.create_channel
|
|
|
|
q = ch.queue("peatio.trades.errors")
|
|
puts "****** Fetching Queue Messages ******"
|
|
count = q.message_count
|
|
puts "****** Total Messages in queue = #{count} ******"
|
|
errors = []
|
|
until count == 0
|
|
_delivery_info, _metadata, payload = q.pop
|
|
payload = JSON.parse(payload).symbolize_keys!
|
|
err_obj = payload.slice(:code, :message)
|
|
if err = errors.find{|k| k[:code] == err_obj.fetch(:code)}
|
|
err[:count] += 1
|
|
else
|
|
errors << {code: err_obj.fetch(:code), count: 1 }
|
|
end
|
|
count -= 1
|
|
end
|
|
|
|
errors.each do |error|
|
|
puts "****** Error Code: #{error[:code]} Count = #{error[:count]} ******"
|
|
end
|
|
puts "****** purging queue *******"
|
|
q.purge
|
|
|
|
end
|
|
end
|