class Banter::Server::ClientQueueListener
Attributes
worker_class[R]
Public Class Methods
new(worker_class)
click to toggle source
# File lib/banter/server/client_queue_listener.rb, line 13 def initialize(worker_class) @worker_class = worker_class @subscriber = RabbitMQSubscriber.new(worker_class.config) end
Public Instance Methods
clear_dead_letter(dead_letter_queue, envelope)
click to toggle source
# File lib/banter/server/client_queue_listener.rb, line 47 def clear_dead_letter(dead_letter_queue, envelope) if !dead_letter_queue.blank? && !envelope[:dead_letter].blank? envelope.dead_letter.completed = 1 Banter::Publisher.instance.publish_to_queue(dead_letter_queue, envelope) end end
message_received(delivery_info, properties, envelope)
click to toggle source
# File lib/banter/server/client_queue_listener.rb, line 29 def message_received(delivery_info, properties, envelope) Banter::RabbitLogger.log(::Logger::DEBUG, "Message received by listener on #{worker_class.name} with payload: #{envelope[:payload]}") worker = worker_class.new(delivery_info, properties, envelope[:context], envelope) payload = envelope[:payload] worker.perform!(payload) clear_dead_letter(worker_class.config.dead_letter_queue_name, envelope) rescue ::Banter::PayloadValidationError => banter_error Banter::RabbitLogger.log(::Logger::ERROR, { worker: worker_class.name, message: banter_error.message, envelope: envelope }) ::Banter::Notifier.notify(banter_error, { delivery_info: delivery_info, properties: properties, envelope: envelope}) raise banter_error rescue => e Banter::RabbitLogger.log(::Logger::ERROR, "Failed message for #{worker_class.name} #{e.message}") ::Banter::Notifier.notify(e, { delivery_info: delivery_info, properties: properties, envelope: envelope}) raise e end
shutdown()
click to toggle source
# File lib/banter/server/client_queue_listener.rb, line 25 def shutdown @subscriber.teardown if @subscriber.present? end
start()
click to toggle source
# File lib/banter/server/client_queue_listener.rb, line 18 def start @subscriber.start do |delivery_info, properties, envelope| message_received(delivery_info, properties, envelope) true end end