Class: Banter::Server::ClientQueueListener
- Inherits:
-
Object
- Object
- Banter::Server::ClientQueueListener
- Includes:
- Celluloid
- Defined in:
- lib/banter/server/client_queue_listener.rb
Instance Attribute Summary collapse
-
#worker_class ⇒ Object
readonly
Returns the value of attribute worker_class.
Instance Method Summary collapse
- #clear_dead_letter(dead_letter_queue, envelope) ⇒ Object
-
#initialize(worker_class) ⇒ ClientQueueListener
constructor
A new instance of ClientQueueListener.
- #message_received(delivery_info, properties, envelope) ⇒ Object
- #shutdown ⇒ Object
- #start ⇒ Object
Constructor Details
#initialize(worker_class) ⇒ ClientQueueListener
Returns a new instance of ClientQueueListener.
13 14 15 16 |
# 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 |
Instance Attribute Details
#worker_class ⇒ Object (readonly)
Returns the value of attribute worker_class.
11 12 13 |
# File 'lib/banter/server/client_queue_listener.rb', line 11 def worker_class @worker_class end |
Instance Method Details
#clear_dead_letter(dead_letter_queue, envelope) ⇒ Object
47 48 49 50 51 52 |
# 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) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/banter/server/client_queue_listener.rb', line 29 def (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., 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.}") ::Banter::Notifier.notify(e, { delivery_info: delivery_info, properties: properties, envelope: envelope}) raise e end |
#shutdown ⇒ Object
25 26 27 |
# File 'lib/banter/server/client_queue_listener.rb', line 25 def shutdown @subscriber.teardown if @subscriber.present? end |
#start ⇒ Object
18 19 20 21 22 23 |
# File 'lib/banter/server/client_queue_listener.rb', line 18 def start @subscriber.start do |delivery_info, properties, envelope| (delivery_info, properties, envelope) true end end |