class Leveret::ResultHandler

Handles the acknowledgement or rejection of messages after execution

Attributes

incoming_message[RW]

Public Class Methods

new(incoming_message) click to toggle source

@param [Message] incoming_message Contains delivery information such as the delivery_tag

# File lib/leveret/result_handler.rb, line 11
def initialize(incoming_message)
  self.incoming_message = incoming_message
end

Public Instance Methods

delay() click to toggle source

Acknowledge the message, but publish it onto the delay queue for execution later

# File lib/leveret/result_handler.rb, line 42
def delay
  log.debug ["[#{delivery_tag}] Delaying message"]
  channel.acknowledge(delivery_tag)
  delay_queue.republish(incoming_message)
end
handle(result) click to toggle source

Call the appropriate handling method for the result

@param [Symbol] result Result returned from running the job, one of :success, :reject or :requeue

# File lib/leveret/result_handler.rb, line 18
def handle(result)
  log.info "[#{delivery_tag}] Job returned #{result}"
  send(result) if [:success, :reject, :requeue, :delay].include?(result)
end
reject() click to toggle source

Mark the message as rejected (failure)

# File lib/leveret/result_handler.rb, line 30
def reject
  log.debug "[#{delivery_tag}] Rejecting message"
  channel.reject(delivery_tag)
end
requeue() click to toggle source

Reject the message and reinsert it onto it's queue

# File lib/leveret/result_handler.rb, line 36
def requeue
  log.debug "[#{delivery_tag}] Requeueing message"
  channel.reject(delivery_tag, true)
end
success() click to toggle source

Mark the message as acknowledged

# File lib/leveret/result_handler.rb, line 24
def success
  log.debug "[#{delivery_tag}] Acknowledging message"
  channel.acknowledge(delivery_tag)
end

Private Instance Methods

channel() click to toggle source
# File lib/leveret/result_handler.rb, line 50
def channel
  incoming_message.delivery_info.channel
end
delivery_tag() click to toggle source
# File lib/leveret/result_handler.rb, line 54
def delivery_tag
  incoming_message.delivery_info.delivery_tag
end