Class: Spree::Events::Adapters::Base
- Inherits:
-
Object
- Object
- Spree::Events::Adapters::Base
- Defined in:
- lib/spree/events/adapters/base.rb
Overview
Base class for event adapters.
Adapters are responsible for the actual publishing and subscription management of events. The default adapter uses ActiveSupport::Notifications, but you can create custom adapters for other backends like Kafka, RabbitMQ, or Redis Pub/Sub.
Direct Known Subclasses
Instance Attribute Summary collapse
-
#registry ⇒ Object
readonly
Returns the value of attribute registry.
Instance Method Summary collapse
-
#activate! ⇒ Object
Activate the adapter.
-
#deactivate! ⇒ Object
Deactivate the adapter.
-
#initialize(registry) ⇒ Base
constructor
Initialize the adapter with a registry.
-
#publish(event_name, payload, metadata = {}) ⇒ Spree::Event
Publish an event to all matching subscribers.
-
#subscribe(pattern, subscriber, options = {}) ⇒ Object
Subscribe to an event pattern.
-
#unsubscribe(pattern, subscriber) ⇒ Boolean
Unsubscribe from an event pattern.
Constructor Details
#initialize(registry) ⇒ Base
Initialize the adapter with a registry.
40 41 42 |
# File 'lib/spree/events/adapters/base.rb', line 40 def initialize(registry) @registry = registry end |
Instance Attribute Details
#registry ⇒ Object (readonly)
Returns the value of attribute registry.
35 36 37 |
# File 'lib/spree/events/adapters/base.rb', line 35 def registry @registry end |
Instance Method Details
#activate! ⇒ Object
Activate the adapter.
Called during Rails initialization. Use this to set up connections, start consumers, or perform any initialization needed.
92 93 94 |
# File 'lib/spree/events/adapters/base.rb', line 92 def activate! raise NotImplementedError, "#{self.class}#activate! must be implemented" end |
#deactivate! ⇒ Object
Deactivate the adapter.
Called during shutdown or when resetting the event system. Use this to clean up connections and resources.
101 102 103 |
# File 'lib/spree/events/adapters/base.rb', line 101 def deactivate! raise NotImplementedError, "#{self.class}#deactivate! must be implemented" end |
#publish(event_name, payload, metadata = {}) ⇒ Spree::Event
Publish an event to all matching subscribers.
54 55 56 |
# File 'lib/spree/events/adapters/base.rb', line 54 def publish(event_name, payload, = {}) raise NotImplementedError, "#{self.class}#publish must be implemented" end |
#subscribe(pattern, subscriber, options = {}) ⇒ Object
Subscribe to an event pattern.
This method should register the subscriber in the registry. The adapter is responsible for ensuring events are routed to matching subscribers.
73 74 75 |
# File 'lib/spree/events/adapters/base.rb', line 73 def subscribe(pattern, subscriber, = {}) raise NotImplementedError, "#{self.class}#subscribe must be implemented" end |
#unsubscribe(pattern, subscriber) ⇒ Boolean
Unsubscribe from an event pattern.
83 84 85 |
# File 'lib/spree/events/adapters/base.rb', line 83 def unsubscribe(pattern, subscriber) raise NotImplementedError, "#{self.class}#unsubscribe must be implemented" end |