amqp_helpers 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.3
1
+ 0.0.4
@@ -10,7 +10,7 @@ module AMQPHelpers
10
10
  class ConnectionError < Error; end
11
11
  class ChannelError < Error; end
12
12
 
13
- DEFAULT_RECONNECT_WAIT_TIME = 30
13
+ DEFAULT_RECONNECT_WAIT_TIME = 10
14
14
 
15
15
  attr_accessor :name, :exchanges, :connection_params
16
16
  attr_writer :environment, :logger, :queue_name, :queue_params, :reconnect_wait_time
@@ -26,7 +26,10 @@ module AMQPHelpers
26
26
 
27
27
  def start(&handler)
28
28
  logger.info "Starting #{name} daemon..."
29
- AMQP.start(connection_params) do |connection|
29
+ tcp_connection_failure_handler = Proc.new(&method(:handle_tcp_connection_failure))
30
+ amqp_params = { on_tcp_connection_failure: tcp_connection_failure_handler}.merge(connection_params)
31
+ AMQP.start(amqp_params) do |connection|
32
+ connection.on_open(&method(:handle_open))
30
33
  connection.on_error(&method(:handle_connection_error))
31
34
  channel = initialize_channel(connection)
32
35
  connection.on_tcp_connection_loss(&method(:handle_tcp_connection_loss))
@@ -35,11 +38,12 @@ module AMQPHelpers
35
38
  queue = initialize_queue(channel)
36
39
  queue.subscribe(&handler)
37
40
 
38
- show_stopper = Proc.new do
39
- logger.info "Signal INT received. #{name} is going down... I REPEAT: WE ARE GOING DOWN!"
41
+ show_stopper = Proc.new do |signal|
42
+ logger.info "Signal #{signal} received. #{name} is going down... I REPEAT: WE ARE GOING DOWN!"
40
43
  connection.close { EventMachine.stop }
41
44
  end
42
45
  Signal.trap 'INT', show_stopper
46
+ Signal.trap 'TERM', show_stopper
43
47
  end
44
48
  end
45
49
 
@@ -68,6 +72,15 @@ module AMQPHelpers
68
72
  end
69
73
 
70
74
  protected
75
+ def handle_tcp_connection_failure(settings)
76
+ logger.error "[network failure] Could not connect to #{settings[:host]}:#{settings[:port]}"
77
+ raise ConnectionError, "Failed to connect!"
78
+ end
79
+
80
+ def handle_open
81
+ logger.info "#{name} successfully opened AMQP connection"
82
+ end
83
+
71
84
  def handle_connection_error(connection, connection_close)
72
85
  logger.error "[connection.close] Reply code = #{connection_close.reply_code}, reply text = #{connection_close.reply_text}"
73
86
  # check if graceful broker shutdown
@@ -86,7 +99,7 @@ module AMQPHelpers
86
99
 
87
100
  def handle_tcp_connection_loss(connection, settings)
88
101
  logger.error '[network failure] Trying to reconnect...'
89
- connection.reconnect(false, 10)
102
+ connection.reconnect(false, reconnect_wait_time)
90
103
  end
91
104
 
92
105
  def handle_recovery(connection, settings)
data/spec/daemon_spec.rb CHANGED
@@ -46,6 +46,7 @@ describe AMQPHelpers::Daemon do
46
46
  connection.stub(:open?).and_return(true)
47
47
  connection.stub(:channel_max).and_return(0)
48
48
  connection.stub(:on_connection)
49
+ connection.stub(:on_recovery)
49
50
  connection.stub(:on_error)
50
51
  connection.stub(:on_tcp_connection_loss)
51
52
  connection.stub(:next_channel_id).and_return(0)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: amqp_helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: