right_amqp 0.5.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -247,13 +247,7 @@ module AMQP
247
247
  def reconnect force = false
248
248
  if @reconnecting and not force
249
249
  # Wait after first reconnect attempt and in between each subsequent attempt
250
- EM.add_timer(@settings[:reconnect_interval] || 5) do
251
- begin
252
- reconnect(true)
253
- rescue Exception => e
254
- logger.exception("[amqp] Failed to reconnect", e, :trace)
255
- end
256
- end
250
+ EM.add_timer(@settings[:reconnect_interval] || 5) { reconnect(true) }
257
251
  return
258
252
  end
259
253
 
@@ -271,13 +265,7 @@ module AMQP
271
265
  again = again.call if again.is_a?(Proc)
272
266
  if again.is_a?(Numeric)
273
267
  # Wait before making initial reconnect attempt
274
- EM.add_timer(again) do
275
- begin
276
- reconnect(true)
277
- rescue Exception => e
278
- logger.exception("[amqp] Failed to reconnect", e, :trace)
279
- end
280
- end
268
+ EM.add_timer(again) { reconnect(true) }
281
269
  return
282
270
  elsif ![nil, true].include?(again)
283
271
  raise ::AMQP::Error, "Could not interpret :reconnect_delay => #{again.inspect}; expected nil, true, or Numeric"
@@ -287,6 +275,9 @@ module AMQP
287
275
  log 'reconnecting'
288
276
  logger.info("[amqp] Attempting to reconnect to #{@settings[:identity]}")
289
277
  EM.reconnect(@settings[:host], @settings[:port], self)
278
+ rescue Exception => e
279
+ logger.exception("[amqp] Failed to reconnect", e, :trace)
280
+ failed
290
281
  end
291
282
 
292
283
  def self.connect opts = {}
@@ -300,14 +291,14 @@ module AMQP
300
291
 
301
292
  def failed
302
293
  @connection_status.call(:failed) if @connection_status
303
- @failed = true
294
+ @has_failed = true
304
295
  close_connection
305
296
  end
306
297
 
307
298
  private
308
299
 
309
300
  def disconnected
310
- unless @failed
301
+ unless @has_failed
311
302
  @connection_status.call(:disconnected) if @connection_status
312
303
  reconnect
313
304
  end
@@ -24,8 +24,8 @@ require 'rubygems'
24
24
 
25
25
  Gem::Specification.new do |spec|
26
26
  spec.name = 'right_amqp'
27
- spec.version = '0.5.2'
28
- spec.date = '2012-09-27'
27
+ spec.version = '0.6.0'
28
+ spec.date = '2012-12-10'
29
29
  spec.authors = ['Lee Kirchhoff']
30
30
  spec.email = 'lee@rightscale.com'
31
31
  spec.homepage = 'https://github.com/rightscale/right_amqp'
@@ -38,7 +38,7 @@ Gem::Specification.new do |spec|
38
38
  spec.require_path = 'lib'
39
39
 
40
40
  spec.add_dependency('right_support', ['>= 1.2', '< 3.0'])
41
- spec.add_dependency('eventmachine', '~> 0.12.10')
41
+ spec.add_dependency('eventmachine', ['>= 0.12.10', '< 2.0'])
42
42
 
43
43
  spec.description = <<-EOF
44
44
  RightAMQP provides a high availability client for interfacing with the
@@ -33,7 +33,7 @@ describe AMQP::Client do
33
33
  class SUT
34
34
  include AMQP::Client
35
35
 
36
- attr_accessor :reconnecting, :settings, :channels
36
+ attr_accessor :reconnecting, :settings, :channels, :has_failed
37
37
  end
38
38
 
39
39
  before(:each) do
@@ -88,7 +88,7 @@ describe AMQP::Client do
88
88
  end
89
89
  end
90
90
 
91
- context 'with a :reconnect_interval of 5 seconds' do
91
+ context 'with a :reconnect_interval of 5 seconds' do
92
92
  it 'should schedule reconnect attempts on a 5s interval' do
93
93
  @sut.reconnecting = true
94
94
  @sut.settings[:reconnect_delay] = 15
@@ -101,6 +101,17 @@ describe AMQP::Client do
101
101
  end
102
102
  end
103
103
 
104
+ context 'with a reconnect failure' do
105
+ it 'should fail the connection' do
106
+ @logger.should_receive(:error).with(/Failed to reconnect/).once
107
+ flexmock(EM).should_receive(:reconnect).and_raise(Exception).once
108
+ flexmock(@sut).should_receive(:close_connection).once
109
+
110
+ @sut.reconnect()
111
+ @sut.has_failed.should be_true
112
+ end
113
+ end
114
+
104
115
  end
105
116
 
106
117
  context "heartbeat" do
metadata CHANGED
@@ -1,8 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: right_amqp
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.5.2
4
+ hash: 7
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 6
9
+ - 0
10
+ version: 0.6.0
6
11
  platform: ruby
7
12
  authors:
8
13
  - Lee Kirchhoff
@@ -10,33 +15,54 @@ autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
17
 
13
- date: 2012-09-27 00:00:00 Z
18
+ date: 2012-12-10 00:00:00 -08:00
19
+ default_executable:
14
20
  dependencies:
15
21
  - !ruby/object:Gem::Dependency
16
- name: right_support
17
- requirement: &id001 !ruby/object:Gem::Requirement
22
+ version_requirements: &id001 !ruby/object:Gem::Requirement
18
23
  none: false
19
24
  requirements:
20
25
  - - ">="
21
26
  - !ruby/object:Gem::Version
27
+ hash: 11
28
+ segments:
29
+ - 1
30
+ - 2
22
31
  version: "1.2"
23
32
  - - <
24
33
  - !ruby/object:Gem::Version
34
+ hash: 7
35
+ segments:
36
+ - 3
37
+ - 0
25
38
  version: "3.0"
26
- type: :runtime
39
+ requirement: *id001
40
+ name: right_support
27
41
  prerelease: false
28
- version_requirements: *id001
42
+ type: :runtime
29
43
  - !ruby/object:Gem::Dependency
30
- name: eventmachine
31
- requirement: &id002 !ruby/object:Gem::Requirement
44
+ version_requirements: &id002 !ruby/object:Gem::Requirement
32
45
  none: false
33
46
  requirements:
34
- - - ~>
47
+ - - ">="
35
48
  - !ruby/object:Gem::Version
49
+ hash: 59
50
+ segments:
51
+ - 0
52
+ - 12
53
+ - 10
36
54
  version: 0.12.10
37
- type: :runtime
55
+ - - <
56
+ - !ruby/object:Gem::Version
57
+ hash: 3
58
+ segments:
59
+ - 2
60
+ - 0
61
+ version: "2.0"
62
+ requirement: *id002
63
+ name: eventmachine
38
64
  prerelease: false
39
- version_requirements: *id002
65
+ type: :runtime
40
66
  description: |
41
67
  RightAMQP provides a high availability client for interfacing with the
42
68
  RightScale RabbitMQ broker using the AMQP protocol. The AMQP version on which
@@ -86,6 +112,7 @@ files:
86
112
  - spec/ha_client/ha_broker_client_spec.rb
87
113
  - spec/spec.opts
88
114
  - spec/spec_helper.rb
115
+ has_rdoc: true
89
116
  homepage: https://github.com/rightscale/right_amqp
90
117
  licenses: []
91
118
 
@@ -102,20 +129,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
102
129
  requirements:
103
130
  - - ">="
104
131
  - !ruby/object:Gem::Version
132
+ hash: 57
133
+ segments:
134
+ - 1
135
+ - 8
136
+ - 7
105
137
  version: 1.8.7
106
138
  required_rubygems_version: !ruby/object:Gem::Requirement
107
139
  none: false
108
140
  requirements:
109
141
  - - ">="
110
142
  - !ruby/object:Gem::Version
111
- hash: -2478325882145006722
143
+ hash: 3
112
144
  segments:
113
145
  - 0
114
146
  version: "0"
115
147
  requirements: []
116
148
 
117
149
  rubyforge_project:
118
- rubygems_version: 1.8.11
150
+ rubygems_version: 1.3.7
119
151
  signing_key:
120
152
  specification_version: 3
121
153
  summary: Client for interfacing to RightScale RabbitMQ broker using AMQP