class RubyEventStore::ComposedBroker
Public Class Methods
Source
# File lib/ruby_event_store/composed_broker.rb, line 5 def initialize(*brokers, multiple_brokers: false) @brokers = brokers @multiple_brokers = multiple_brokers end
Public Instance Methods
Source
# File lib/ruby_event_store/composed_broker.rb, line 27 def add_global_subscription(subscriber) brokers = verified_brokers(nil) raise SubscriptionsNotSupported, "No broker found for global subscription." if brokers.empty? brokers.each { |broker| broker.add_global_subscription(subscriber) } end
Source
# File lib/ruby_event_store/composed_broker.rb, line 19 def add_subscription(subscriber, topics) topics.each do |topic| brokers = verified_brokers(topic) raise SubscriptionsNotSupported, "No broker found for topic '#{topic}'." if brokers.empty? brokers.each { |broker| broker.add_subscription(subscriber, topic) } end end
Source
# File lib/ruby_event_store/composed_broker.rb, line 41 def add_thread_global_subscription(subscriber) brokers = verified_brokers(nil) raise SubscriptionsNotSupported, "No broker found for global subscription." if brokers.empty? brokers.each { |broker| broker.add_thread_global_subscription(subscriber) } end
Source
# File lib/ruby_event_store/composed_broker.rb, line 33 def add_thread_subscription(subscriber, topics) topics.each do |topic| brokers = verified_brokers(topic) raise SubscriptionsNotSupported, "No broker found for topic '#{topic}'." if brokers.empty? brokers.each { |broker| broker.add_thread_subscription(subscriber, topic) } end end
Source
# File lib/ruby_event_store/composed_broker.rb, line 47 def all_subscriptions_for(topic) @brokers.flat_map { |broker| broker.all_subscriptions_for(topic) } end
Source
# File lib/ruby_event_store/composed_broker.rb, line 10 def call(event, record, topic) brokers = verified_brokers(topic) if brokers.empty? warn "No broker found for topic '#{topic}'. Event #{event.event_id} will not be processed." else brokers.each { |broker| broker.call(event, record, topic) } end end
Source
# File lib/ruby_event_store/composed_broker.rb, line 51 def verify(topic) !verified_brokers(topic).empty? end
Private Instance Methods
Source
# File lib/ruby_event_store/composed_broker.rb, line 57 def verified_brokers(topic) if @multiple_brokers @brokers.select { |broker| broker.verify(topic) } else [@brokers.find { |broker| broker.verify(topic) }].compact end end