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.
12 13 14 |
# File 'app/messages/messages/broker.rb', line 12 def initialize(bunny_config) @bunny_config = OpenStruct.new(bunny_config) # rubocop:todo Style/OpenStructUse end |
Instance Attribute Details
#bunny_config ⇒ Object (readonly)
Returns the value of attribute bunny_config.
10 11 12 |
# File 'app/messages/messages/broker.rb', line 10 def bunny_config @bunny_config end |
#channel ⇒ Object (readonly)
Returns the value of attribute channel.
10 11 12 |
# File 'app/messages/messages/broker.rb', line 10 def channel @channel end |
#connection ⇒ Object
Returns the value of attribute connection.
9 10 11 |
# File 'app/messages/messages/broker.rb', line 9 def connection @connection end |
#exchange ⇒ Object (readonly)
Returns the value of attribute exchange.
10 11 12 |
# File 'app/messages/messages/broker.rb', line 10 def exchange @exchange end |
#queue ⇒ Object (readonly)
Returns the value of attribute queue.
10 11 12 |
# File 'app/messages/messages/broker.rb', line 10 def queue @queue end |
Instance Method Details
#bind_queue ⇒ Object
57 58 59 |
# File 'app/messages/messages/broker.rb', line 57 def bind_queue @queue.bind(@exchange, routing_key: bunny_config.routing_key) end |
#connect ⇒ Object
24 25 26 |
# File 'app/messages/messages/broker.rb', line 24 def connect connect! end |
#connect! ⇒ Object
28 29 30 31 32 33 34 |
# File 'app/messages/messages/broker.rb', line 28 def connect! start_connection open_channel instantiate_exchange declare_queue bind_queue end |
#connected? ⇒ Boolean
20 21 22 |
# File 'app/messages/messages/broker.rb', line 20 def connected? @connection&.connected? end |
#create_connection ⇒ Object
16 17 18 |
# File 'app/messages/messages/broker.rb', line 16 def create_connection connected? || connect end |
#declare_queue ⇒ Object
53 54 55 |
# File 'app/messages/messages/broker.rb', line 53 def declare_queue @queue = @channel.queue(bunny_config.queue_name, durable: true) end |
#instantiate_exchange ⇒ Object
49 50 51 |
# File 'app/messages/messages/broker.rb', line 49 def instantiate_exchange @exchange = @channel.topic(bunny_config.exchange, passive: true) end |
#open_channel ⇒ Object
45 46 47 |
# File 'app/messages/messages/broker.rb', line 45 def open_channel @channel = @connection.create_channel end |
#publish(message) ⇒ Object
61 62 63 |
# File 'app/messages/messages/broker.rb', line 61 def publish() @exchange&.publish(.payload, routing_key: bunny_config['routing_key']) end |
#start_connection ⇒ Object
36 37 38 39 40 41 42 43 |
# File 'app/messages/messages/broker.rb', line 36 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 |