Class: MultipleMan::Connection
- Inherits:
-
Object
- Object
- MultipleMan::Connection
- Defined in:
- lib/multiple_man/connection.rb
Instance Attribute Summary collapse
-
#topic ⇒ Object
readonly
Returns the value of attribute topic.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(channel) ⇒ Connection
constructor
A new instance of Connection.
- #topic_name ⇒ Object
Constructor Details
#initialize(channel) ⇒ Connection
Returns a new instance of Connection.
77 78 79 80 |
# File 'lib/multiple_man/connection.rb', line 77 def initialize(channel) self.channel = channel self.topic = channel.topic(topic_name, MultipleMan.configuration.exchange_opts) end |
Instance Attribute Details
#topic ⇒ Object
Returns the value of attribute topic.
74 75 76 |
# File 'lib/multiple_man/connection.rb', line 74 def topic @topic end |
Class Method Details
.channel ⇒ Object
28 29 30 31 32 33 34 35 36 |
# File 'lib/multiple_man/connection.rb', line 28 def self.channel Thread.current.thread_variable_get(:multiple_man_current_channel) || begin channel = connection.create_channel channel_gc.push(channel) Thread.current.thread_variable_set(:multiple_man_current_channel, channel) channel end end |
.channel_gc ⇒ Object
58 59 60 61 62 |
# File 'lib/multiple_man/connection.rb', line 58 def self.channel_gc @channel_gc ||= ChannelMaintenance::GC.new( MultipleMan.configuration, ChannelMaintenance::Reaper.new(MultipleMan.configuration)) end |
.connect ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/multiple_man/connection.rb', line 8 def self.connect yield new(channel) Thread.current[:multiple_man_exception_retry_count] = 0 rescue Bunny::Exception, Timeout::Error => e = MultipleMan.configuration.connection_recovery MultipleMan.logger.debug "Bunny Error: #{e.inspect}" retry_count = Thread.current[:multiple_man_exception_retry_count] || 0 retry_count += 1 if retry_count < [:max_retries] Thread.current[:multiple_man_exception_retry_count] = retry_count sleep [:time_between_retries] retry else Thread.current[:multiple_man_exception_retry_count] = 0 raise "MultipleMan::ConnectionError" end end |
.connection ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/multiple_man/connection.rb', line 38 def self.connection @mutex.synchronize do @connection ||= begin connection = Bunny.new( MultipleMan.configuration.connection, { heartbeat_interval: 5, automatically_recover: true, recover_from_connection_close: true, network_recovery_interval: MultipleMan.configuration.connection_recovery[:time_before_reconnect] }.merge(MultipleMan.configuration.bunny_opts) ) MultipleMan.logger.debug "Connecting to #{MultipleMan.configuration.connection}" connection.start connection end end end |
.reset! ⇒ Object
64 65 66 67 68 69 70 71 72 |
# File 'lib/multiple_man/connection.rb', line 64 def self.reset! @mutex.synchronize do @connection.close if @connection @connection = nil @channel_gc.stop if @channel_gc @channel_gc = nil end end |
Instance Method Details
#topic_name ⇒ Object
82 83 84 |
# File 'lib/multiple_man/connection.rb', line 82 def topic_name MultipleMan.configuration.topic_name end |