class Barbeque::MessageQueue

Attributes

job_queue[R]

Public Class Methods

new(job_queue) click to toggle source
# File lib/barbeque/message_queue.rb, line 9
def initialize(job_queue)
  @job_queue = job_queue
  @messages  = []
  @stop      = false
end

Public Instance Methods

delete_message(message) click to toggle source

Remove a message from SQS queue. @param [Barbeque::Message::Base] message

# File lib/barbeque/message_queue.rb, line 33
def delete_message(message)
  client.delete_message(
    queue_url: @job_queue.queue_url,
    receipt_handle: message.receipt_handle,
  )
end
dequeue() click to toggle source

Receive a message from SQS queue. @return [Barbeque::Message::Base]

# File lib/barbeque/message_queue.rb, line 17
def dequeue
  loop do
    return nil if @stop
    message = receive_message
    if message
      if message.valid?
        return message
      else
        delete_message(message)
      end
    end
  end
end
stop!() click to toggle source
# File lib/barbeque/message_queue.rb, line 40
def stop!
  @stop = true
end

Private Instance Methods

client() click to toggle source
# File lib/barbeque/message_queue.rb, line 57
def client
  @client ||= Aws::SQS::Client.new
end
receive_message() click to toggle source
# File lib/barbeque/message_queue.rb, line 46
def receive_message
  result = client.receive_message(
    queue_url: @job_queue.queue_url,
    wait_time_seconds: Barbeque.config.sqs_receive_message_wait_time,
    max_number_of_messages: 1,
  )
  if result.messages[0]
    Barbeque::Message.parse(result.messages[0])
  end
end