class Trusty::IronIo::QueueProcessor

Attributes

client[R]
queue_name[R]

Public Class Methods

new(queue_name) click to toggle source
# File lib/trusty/iron_io/queue_processor.rb, line 16
def initialize(queue_name)
  @queue_name = queue_name
  @client     = IronMQ::Client.new(:token => ENV['IRON_TOKEN'], :project_id => ENV['IRON_PROJECT_ID'])
end
run(queue_name, *args, &block) click to toggle source

helper method forwards to “run” instance method

# File lib/trusty/iron_io/queue_processor.rb, line 10
def self.run(queue_name, *args, &block)
  new(queue_name).run(*args, &block)
end

Public Instance Methods

default_options() click to toggle source
# File lib/trusty/iron_io/queue_processor.rb, line 21
def default_options
  { :timeout => 30, :break_if_nil => true }
end
queue() click to toggle source
# File lib/trusty/iron_io/queue_processor.rb, line 25
def queue
  @queue ||= client.queue(queue_name)
end
run(options = {}, &block) click to toggle source
# File lib/trusty/iron_io/queue_processor.rb, line 29
def run(options = {}, &block)
  options = default_options.merge(options)
  
  queue.poll(options) do |message|#, :break_if_nil => true do |message|
    
    # parse body for better data formatting
    begin
      body = JSON.parse message.body
    rescue JSON::ParserError => ex
      body = message.body
    end
    
    try_with_data :message_id => message.id, :body => body do
      block.call(message, queue)
    end
  end
end
webhook_url() click to toggle source
# File lib/trusty/iron_io/queue_processor.rb, line 47
def webhook_url
  url_template = 'https://mq-aws-us-east-1.iron.io/1/projects/%{project_id}/queues/%{queue_name}/messages/webhook?oauth=%{token}'
  
  url_template % {
    project_id: ENV['IRON_TOKEN'],
    token: ENV['IRON_PROJECT_ID'],
    queue_name: queue_name
  }
end