class Warren::Handler::Broadcast::Channel
Wraps a Bunny::Channel @see rubydoc.info/gems/bunny/Bunny/Channel
Attributes
routing_key_prefix[R]
Public Class Methods
new(bun_channel, routing_key_prefix:, exchange: nil)
click to toggle source
# File lib/warren/handler/broadcast.rb, line 24 def initialize(bun_channel, routing_key_prefix:, exchange: nil) @bun_channel = bun_channel @exchange_name = exchange @routing_key_prefix = routing_key_prefix @routing_key_template = Handler.routing_key_template(routing_key_prefix) end
Public Instance Methods
<<(message)
click to toggle source
Publishes `message` to the configured exchange
@param message [#routing_key,#payload] A message should respond to routing_key and payload.
@see Warren::Message::Full
@return [Warren::Handler::Broadcast::Channel] returns self for chaining
# File lib/warren/handler/broadcast.rb, line 38 def <<(message) publish(message) end
publish(message, exchange: configured_exchange)
click to toggle source
Publishes `message` to `exchange` (Defaults to configured exchange)
@param message [#routing_key,#payload] A message should respond to routing_key and payload.
@see Warren::Message::Full
@param exchange [Bunny::Exchange] The exchange to publish to
@return [Warren::Handler::Broadcast::Channel] returns self for chaining
# File lib/warren/handler/broadcast.rb, line 50 def publish(message, exchange: configured_exchange) exchange.publish(message.payload, routing_key: key_for(message), headers: message.headers) self end
Private Instance Methods
configured_exchange()
click to toggle source
# File lib/warren/handler/broadcast.rb, line 57 def configured_exchange raise StandardError, 'No exchange configured' if @exchange_name.nil? @configured_exchange ||= exchange(@exchange_name, auto_delete: false, durable: true, type: :topic) end
key_for(message)
click to toggle source
# File lib/warren/handler/broadcast.rb, line 63 def key_for(message) @routing_key_template % message.routing_key end