Class: Ears::Consumer Abstract
- Inherits:
-
Object
- Object
- Ears::Consumer
- Defined in:
- lib/ears/consumer.rb
Overview
This class is abstract.
Subclass and override #work to implement.
The abstract base class for consumers processing messages from queues.
Defined Under Namespace
Classes: InvalidReturnError
Class Method Summary collapse
-
.middlewares ⇒ Array<Ears::Middleware>
List of registered middlewares.
-
.use(middleware, opts = {}) ⇒ Object
Registers a new middleware by instantiating +middleware+ and passing it +opts+.
Instance Method Summary collapse
-
#process_delivery(delivery_info, metadata, payload) ⇒ Object
Wraps #work to add middlewares.
-
#work(delivery_info, metadata, payload) ⇒ :ack, ...
The method that is called when a message from the queue is received.
Class Method Details
.middlewares ⇒ Array<Ears::Middleware>
List of registered middlewares. Register new middlewares with use.
18 19 20 |
# File 'lib/ears/consumer.rb', line 18 def self.middlewares @middlewares ||= [] end |
.use(middleware, opts = {}) ⇒ Object
Registers a new middleware by instantiating +middleware+ and passing it +opts+.
26 27 28 |
# File 'lib/ears/consumer.rb', line 26 def self.use(middleware, opts = {}) middlewares << middleware.new(opts) end |
Instance Method Details
#process_delivery(delivery_info, metadata, payload) ⇒ Object
Wraps #work to add middlewares. This is being called by Ears when a message is received for the consumer.
48 49 50 51 52 53 54 55 56 57 |
# File 'lib/ears/consumer.rb', line 48 def process_delivery(delivery_info, , payload) self .class .middlewares .reverse .reduce(work_proc) do |next_middleware, middleware| nest_middleware(middleware, next_middleware) end .call(delivery_info, , payload) end |
#work(delivery_info, metadata, payload) ⇒ :ack, ...
The method that is called when a message from the queue is received. Keep in mind that the parameters received can be altered by middlewares!
38 39 40 |
# File 'lib/ears/consumer.rb', line 38 def work(delivery_info, , payload) raise NotImplementedError end |