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