class Volt::MessageBus::Redis
Public Class Methods
new(volt_app)
click to toggle source
# File lib/volt/message_bus/redis_message_bus.rb, line 17 def initialize(volt_app) @redis = new_connection end
Public Instance Methods
disconnect!()
click to toggle source
waits for all messages to be flushed and closes connections
# File lib/volt/message_bus/redis_message_bus.rb, line 57 def disconnect! raise "Not implemented" end
new_connection()
click to toggle source
# File lib/volt/message_bus/redis_message_bus.rb, line 45 def new_connection msg_bus = Volt.config.message_bus if msg_bus && (opts = msg_bus.connect_options) ::Redis.new(opts) elsif ENV['REDIS_URL'] ::Redis.new(url: ENV["REDIS_URL"]) else ::Redis.new end end
publish(channel_name, message)
click to toggle source
publish should push out to all subscribed within the volt cluster.
# File lib/volt/message_bus/redis_message_bus.rb, line 41 def publish(channel_name, message) @redis.publish(channel_name.to_sym, message) end
subscribe(channel_name, &block)
click to toggle source
Subscribe should return an object that you can call .remove on to stop the subscription.
# File lib/volt/message_bus/redis_message_bus.rb, line 23 def subscribe(channel_name, &block) sub_redis = new_connection Thread.new do # Since the Redis driver does not have a connection pool, we create a # new connection each time we subscribe. # Note: internally volt does only 1 subscription. sub_redis.subscribe(channel_name.to_sym) do |on| on.message do |channel_name, message| block.call(message) end end end Subscription.new(sub_redis) end