Module: ActionSubscriber::RabbitConnection

Defined in:
lib/action_subscriber/rabbit_connection.rb

Constant Summary collapse

SUBSCRIBER_CONNECTION_MUTEX =
::Mutex.new
NETWORK_RECOVERY_INTERVAL =
1.freeze

Class Method Summary collapse

Class Method Details

.setup_connection(name, settings) ⇒ Object



8
9
10
11
12
13
# File 'lib/action_subscriber/rabbit_connection.rb', line 8

def self.setup_connection(name, settings)
  SUBSCRIBER_CONNECTION_MUTEX.synchronize do
    fail ArgumentError, "a #{name} connection already exists" if subscriber_connections[name]
    subscriber_connections[name] = create_connection(settings)
  end
end

.subscriber_connected?Boolean

Returns:

  • (Boolean)


15
16
17
18
19
# File 'lib/action_subscriber/rabbit_connection.rb', line 15

def self.subscriber_connected?
  SUBSCRIBER_CONNECTION_MUTEX.synchronize do
    subscriber_connections.all?{|_name, connection| connection.connected?}
  end
end

.subscriber_disconnect!Object



21
22
23
24
25
26
# File 'lib/action_subscriber/rabbit_connection.rb', line 21

def self.subscriber_disconnect!
  SUBSCRIBER_CONNECTION_MUTEX.synchronize do
    subscriber_connections.each{|_name, connection| connection.close}
    @subscriber_connections = {}
  end
end

.with_connection(name) ⇒ Object



28
29
30
31
32
33
# File 'lib/action_subscriber/rabbit_connection.rb', line 28

def self.with_connection(name)
  SUBSCRIBER_CONNECTION_MUTEX.synchronize do
    fail ArgumentError, "there is no connection named #{name}" unless subscriber_connections[name]
    yield(subscriber_connections[name])
  end
end