Class: Messages::Broker
- Inherits:
-
Object
- Object
- Messages::Broker
- Defined in:
- app/messages/messages/broker.rb
Overview
This class should control connection, exchange, queues and publishing to the broker
Instance Attribute Summary collapse
-
#bunny_config ⇒ Object
readonly
Returns the value of attribute bunny_config.
-
#channel ⇒ Object
readonly
Returns the value of attribute channel.
-
#connection ⇒ Object
Returns the value of attribute connection.
-
#exchange ⇒ Object
readonly
Returns the value of attribute exchange.
-
#queue ⇒ Object
readonly
Returns the value of attribute queue.
Instance Method Summary collapse
- #bind_queue ⇒ Object
- #connect ⇒ Object
- #connect! ⇒ Object
- #connected? ⇒ Boolean
- #create_connection ⇒ Object
- #declare_queue ⇒ Object
-
#initialize(bunny_config) ⇒ Broker
constructor
A new instance of Broker.
- #instantiate_exchange ⇒ Object
- #open_channel ⇒ Object
- #publish(message) ⇒ Object
- #start_connection ⇒ Object
Constructor Details
#initialize(bunny_config) ⇒ Broker
Returns a new instance of Broker.
11 12 13 |
# File 'app/messages/messages/broker.rb', line 11 def initialize(bunny_config) @bunny_config = SuperStruct.new(bunny_config) end |
Instance Attribute Details
#bunny_config ⇒ Object (readonly)
Returns the value of attribute bunny_config.
9 10 11 |
# File 'app/messages/messages/broker.rb', line 9 def bunny_config @bunny_config end |
#channel ⇒ Object (readonly)
Returns the value of attribute channel.
9 10 11 |
# File 'app/messages/messages/broker.rb', line 9 def channel @channel end |
#connection ⇒ Object
Returns the value of attribute connection.
8 9 10 |
# File 'app/messages/messages/broker.rb', line 8 def connection @connection end |
#exchange ⇒ Object (readonly)
Returns the value of attribute exchange.
9 10 11 |
# File 'app/messages/messages/broker.rb', line 9 def exchange @exchange end |
#queue ⇒ Object (readonly)
Returns the value of attribute queue.
9 10 11 |
# File 'app/messages/messages/broker.rb', line 9 def queue @queue end |
Instance Method Details
#bind_queue ⇒ Object
56 57 58 |
# File 'app/messages/messages/broker.rb', line 56 def bind_queue @queue.bind(@exchange, routing_key: bunny_config.routing_key) end |
#connect ⇒ Object
23 24 25 |
# File 'app/messages/messages/broker.rb', line 23 def connect connect! end |
#connect! ⇒ Object
27 28 29 30 31 32 33 |
# File 'app/messages/messages/broker.rb', line 27 def connect! start_connection open_channel instantiate_exchange declare_queue bind_queue end |
#connected? ⇒ Boolean
19 20 21 |
# File 'app/messages/messages/broker.rb', line 19 def connected? @connection&.connected? end |
#create_connection ⇒ Object
15 16 17 |
# File 'app/messages/messages/broker.rb', line 15 def create_connection connected? || connect end |
#declare_queue ⇒ Object
52 53 54 |
# File 'app/messages/messages/broker.rb', line 52 def declare_queue @queue = @channel.queue(bunny_config.queue_name, durable: true) end |
#instantiate_exchange ⇒ Object
48 49 50 |
# File 'app/messages/messages/broker.rb', line 48 def instantiate_exchange @exchange = @channel.topic(bunny_config.exchange, passive: true) end |
#open_channel ⇒ Object
44 45 46 |
# File 'app/messages/messages/broker.rb', line 44 def open_channel @channel = @connection.create_channel end |
#publish(message) ⇒ Object
60 61 62 |
# File 'app/messages/messages/broker.rb', line 60 def publish() @exchange&.publish(.payload, routing_key: bunny_config['routing_key']) end |
#start_connection ⇒ Object
35 36 37 38 39 40 41 42 |
# File 'app/messages/messages/broker.rb', line 35 def start_connection @connection = Bunny.new host: bunny_config.broker_host, port: bunny_config.broker_port, username: bunny_config.broker_username, password: bunny_config.broker_password, vhost: bunny_config.vhost @connection.start end |