class Envoi::Restore::SQSMessageHandler

Attributes

event_handler[RW]
logger[RW]
message[RW]
queue_handler[RW]
worker_thread[RW]

Public Class Methods

new(args = {}) click to toggle source
# File lib/envoi/restore/agent.rb, line 18
def initialize(args = {})
  @logger = args[:logger]
  @queue_handler = args[:queue_handler]
  @message = args[:message]
  @event_handler = args[:event_handler]
end

Public Instance Methods

change_message_visibility_timeout(visibility_timeout) click to toggle source
# File lib/envoi/restore/agent.rb, line 46
def change_message_visibility_timeout(visibility_timeout)
  logger.debug { "Updating Visibility Timeout for Message #{message.message_id}..."}
  queue_handler.poller.change_message_visibility_timeout(message, visibility_timeout)
end
delete_message() click to toggle source
# File lib/envoi/restore/agent.rb, line 51
def delete_message
  logger.debug { "Deleting Message #{message.message_id}..."}
  queue_handler.poller.delete_message(message)
end
process() click to toggle source
# File lib/envoi/restore/agent.rb, line 25
def process
  msg_body_parsed = JSON.parse(message.body)
  event = msg_body_parsed

  result = nil
  worker_thread = Thread.new(event, @event_handler, result) do
    result = @event_handler.process_event(event)
  end

  visibility_timeout = 5
  new_visibility_timeout = 60

  while worker_thread.alive?
    change_message_visibility_timeout(new_visibility_timeout)
    sleep visibility_timeout
  end
  if result && result[:success]
    delete_message
  end
end