class Fluffle::Testing::Loopback
Fake RabbitMQ server presented through a subset of the `Bunny` library's interface
Public Class Methods
instance()
click to toggle source
Singleton server instance that lives in the process
# File lib/fluffle/testing.rb, line 62 def self.instance @instance ||= self.new end
new()
click to toggle source
# File lib/fluffle/testing.rb, line 66 def initialize @queues = Concurrent::Map.new end
Public Instance Methods
add_queue_subscriber(queue_name, block)
click to toggle source
# File lib/fluffle/testing.rb, line 74 def add_queue_subscriber(queue_name, block) subscribers = (@queues[queue_name] ||= Concurrent::Array.new) subscribers << block end
connection()
click to toggle source
# File lib/fluffle/testing.rb, line 70 def connection Connection.new self end
publish(payload, opts)
click to toggle source
# File lib/fluffle/testing.rb, line 80 def publish(payload, opts) queue_name = opts[:routing_key] raise "Missing `:routing_key' in `#publish' opts" unless queue_name delivery_info = DeliveryInfo.new Random.rand(1000000) properties = { reply_to: opts[:reply_to], correlation_id: opts[:correlation_id] } subscribers = @queues[queue_name] if subscribers.nil? || subscribers.empty? $stderr.puts "No subscribers active for queue '#{queue_name}'" return nil end subscribers.each do |subscriber| subscriber.call(delivery_info, properties, payload) end end