Class: Karafka::BaseResponder
- Inherits:
-
Object
- Object
- Karafka::BaseResponder
- Defined in:
- lib/karafka/base_responder.rb
Overview
Base responder from which all Karafka responders should inherit Similar to Rails responders concept. It allows us to design flow from one app to another by isolating what responses should be sent (and where) based on a given action It differs from Rails responders in the way it works: in std http request we can have one response, here we can have unlimited number of them
It has a simple API for defining where should we respond (and if it is required)
Instance Attribute Summary collapse
-
#messages_buffer ⇒ Object
readonly
Returns the value of attribute messages_buffer.
Class Method Summary collapse
-
.topic(topic_name, options = {}) ⇒ Object
Registers a topic as on to which we will be able to respond.
Instance Method Summary collapse
-
#call(*data) ⇒ Object
Performs respond and validates that all the response requirement were met.
-
#initialize ⇒ Karafka::BaseResponder
constructor
Creates a responder object.
Constructor Details
#initialize ⇒ Karafka::BaseResponder
Creates a responder object
69 70 71 |
# File 'lib/karafka/base_responder.rb', line 69 def initialize @messages_buffer = {} end |
Instance Attribute Details
#messages_buffer ⇒ Object (readonly)
Returns the value of attribute messages_buffer.
54 55 56 |
# File 'lib/karafka/base_responder.rb', line 54 def @messages_buffer end |
Class Method Details
.topic(topic_name, options = {}) ⇒ Object
Registers a topic as on to which we will be able to respond
60 61 62 63 64 |
# File 'lib/karafka/base_responder.rb', line 60 def topic(topic_name, = {}) self.topics ||= {} topic_obj = Responders::Topic.new(topic_name, ) self.topics[topic_obj.name] = topic_obj end |
Instance Method Details
#call(*data) ⇒ Object
We know that validators should be executed also before sending data to topics, however the implementation gets way more complicated then, that’s why we check after everything was sent using responder
Performs respond and validates that all the response requirement were met
78 79 80 81 82 |
# File 'lib/karafka/base_responder.rb', line 78 def call(*data) respond(*data) validate! deliver! end |