class Eventr::Coordinator
Attributes
consumers[R]
publishers[R]
Public Class Methods
method_missing(method, *args, &block)
click to toggle source
Calls superclass method
# File lib/eventr/coordinator.rb, line 31 def self.method_missing(method, *args, &block) return super unless instance.public_method.include? method instance.public_send(method, *args, &block) end
new()
click to toggle source
# File lib/eventr/coordinator.rb, line 26 def initialize @publishers = {} @consumers = {} end
Public Instance Methods
consumer(queue_name, &block)
click to toggle source
# File lib/eventr/coordinator.rb, line 54 def consumer(queue_name, &block) unless @publishers.include? queue_name fail Error::InvalidQueue, "#{queue_name} queue does not exist. Define a publisher for the queue first." end @consumers[queue_name] ||= [] @consumers[queue_name] << Consumer.new(@publishers[queue_name], &block) end
publish(queue_name, event)
click to toggle source
# File lib/eventr/coordinator.rb, line 47 def publish(queue_name, event) unless @publishers.include? queue_name fail Error::InvalidQueue, "Publisher #{queue_name.inspect} doesn't exist" end @publishers[queue_name].push(event) end
publisher(queue_name, &block)
click to toggle source
# File lib/eventr/coordinator.rb, line 40 def publisher(queue_name, &block) if @publishers.include? queue_name fail Error::InvalidQueue, "publisher already defined for queue '#{queue_name}'" end @publishers[queue_name] = Publisher.new(&block) end
start()
click to toggle source
# File lib/eventr/coordinator.rb, line 62 def start # rubycop:disable @publishers.each do |q, p| p.start @consumers[q].each { |c| c.start } end end
stop()
click to toggle source
# File lib/eventr/coordinator.rb, line 69 def stop @publishers.each do |q, p| p.stop @consumers[q].each { |c| c.stop } end end