amqp-subscribe-many 0.1.7 → 0.2.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.
data/Rakefile CHANGED
@@ -49,7 +49,7 @@ Jeweler::RubygemsDotOrgTasks.new
49
49
 
50
50
  Jeweler::Tasks.new do |gem|
51
51
  gem.name = "amqp-subscribe-many"
52
- gem.version = "0.1.7"
52
+ gem.version = "0.2.0"
53
53
  gem.homepage = "http://github.com/brendanhay/amqp-subscribe-many"
54
54
  gem.license = "MPL"
55
55
  gem.summary = "An implementation of the publish one, subscribe many pattern"
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{amqp-subscribe-many}
8
- s.version = "0.1.7"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = [%q{brendanhay}]
12
- s.date = %q{2012-09-26}
12
+ s.date = %q{2012-10-17}
13
13
  s.description = %q{Codifies best practices and configuration when consuming from multiple AMQP brokers simultaneously}
14
14
  s.email = %q{brendan@soundcloud.com}
15
15
  s.extra_rdoc_files = [
@@ -26,7 +26,7 @@ module Messaging
26
26
  delay ||= config.reconnect_delay
27
27
  options = AMQP::Client.parse_connection_uri(uri)
28
28
 
29
- AMQP.connect(options) do |connection, open_ok|
29
+ res = AMQP.connect(options) do |connection, open_ok|
30
30
  # Handle TCP connection errors
31
31
  connection.on_tcp_connection_loss do |conn, settings|
32
32
  log.error("Connection to #{uri.inspect} lost, reconnecting")
@@ -47,6 +47,8 @@ module Messaging
47
47
 
48
48
  log.debug("Connection to #{uri.inspect} started")
49
49
  end
50
+
51
+ register_connection(res)
50
52
  end
51
53
 
52
54
  # Open an AMQP::Channel with auto-recovery and error handling.
@@ -56,7 +58,7 @@ module Messaging
56
58
  # @return [AMQP::Channel]
57
59
  # @api public
58
60
  def open_channel(connection, prefetch = nil)
59
- AMQP::Channel.new(connection) do |channel, open_ok|
61
+ res = AMQP::Channel.new(connection) do |channel, open_ok|
60
62
  channel.auto_recovery = true
61
63
  channel.prefetch(prefetch) if prefetch
62
64
 
@@ -72,6 +74,8 @@ module Messaging
72
74
 
73
75
  log.debug("Channel #{channel.id} created")
74
76
  end
77
+
78
+ register_channel(res)
75
79
  end
76
80
 
77
81
  # Declare an exchange on the specified channel.
@@ -117,6 +121,20 @@ module Messaging
117
121
  end
118
122
  end
119
123
 
124
+ # Close all channels and then disconnect all the connections.
125
+ #
126
+ # @return []
127
+ # @api public
128
+ def disconnect
129
+ channels.each do |chan|
130
+ chan.close
131
+ end
132
+
133
+ connections.each do |conn|
134
+ conn.disconnect
135
+ end
136
+ end
137
+
120
138
  protected
121
139
 
122
140
  # @return [#info, #debug, #error]
@@ -133,6 +151,34 @@ module Messaging
133
151
 
134
152
  private
135
153
 
154
+ # @return [Array<AMQP::Channels>]
155
+ # @api private
156
+ def channels
157
+ @channels ||= []
158
+ end
159
+
160
+ # @param channel [AMQP::Channel]
161
+ # @return [AMQP::Channel]
162
+ # @api private
163
+ def register_channel(channel)
164
+ channels << channel
165
+ channel
166
+ end
167
+
168
+ # @return [Array<AMQP::Connection>]
169
+ # @api private
170
+ def connections
171
+ @connections ||= []
172
+ end
173
+
174
+ # @param connection [AMQP::Connection]
175
+ # @return [AMQP::Connection]
176
+ # @api private
177
+ def register_connection(connection)
178
+ connections << connection
179
+ connection
180
+ end
181
+
136
182
  # @param name [String]
137
183
  # @return [Boolean]
138
184
  # @api private
@@ -72,20 +72,6 @@ module Messaging
72
72
  raise NotImplementedError
73
73
  end
74
74
 
75
- # Close all consumer_channels and then disconnect all the consumer_connections.
76
- #
77
- # @return []
78
- # @api public
79
- def disconnect
80
- consumer_channels.each do |chan|
81
- chan.close
82
- end
83
-
84
- consumer_connections.each do |conn|
85
- conn.disconnect
86
- end
87
- end
88
-
89
75
  # Subscribe to a queue which will invoke the supplied block when
90
76
  # a message is received.
91
77
  # Additionally declaring a binding to the specified exchange/key pair.
@@ -25,16 +25,6 @@ module Messaging
25
25
  self
26
26
  end
27
27
 
28
- # Close the channel and then disconnect the connection.
29
- #
30
- # @return []
31
- # @api public
32
- def disconnect
33
- producer_channel.close do |close_ok|
34
- producer_connection.disconnect
35
- end
36
- end
37
-
38
28
  private
39
29
 
40
30
  # @return [Hash(String, AMQP::Exchange)]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: amqp-subscribe-many
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-26 00:00:00.000000000 Z
12
+ date: 2012-10-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: amqp
16
- requirement: &70254082404240 !ruby/object:Gem::Requirement
16
+ requirement: &70133666875920 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.9.6
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70254082404240
24
+ version_requirements: *70133666875920
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bundler
27
- requirement: &70254082403360 !ruby/object:Gem::Requirement
27
+ requirement: &70133666875100 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70254082403360
35
+ version_requirements: *70133666875100
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: minitest
38
- requirement: &70254082402720 !ruby/object:Gem::Requirement
38
+ requirement: &70133666874560 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '3.0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70254082402720
46
+ version_requirements: *70133666874560
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: simplecov
49
- requirement: &70254082401680 !ruby/object:Gem::Requirement
49
+ requirement: &70133666873900 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70254082401680
57
+ version_requirements: *70133666873900
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: mocha
60
- requirement: &70254082401060 !ruby/object:Gem::Requirement
60
+ requirement: &70133666873040 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70254082401060
68
+ version_requirements: *70133666873040
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: jeweler
71
- requirement: &70254082400280 !ruby/object:Gem::Requirement
71
+ requirement: &70133666872200 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70254082400280
79
+ version_requirements: *70133666872200
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: redcarpet
82
- requirement: &70254082399680 !ruby/object:Gem::Requirement
82
+ requirement: &70133666871380 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70254082399680
90
+ version_requirements: *70133666871380
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: yard
93
- requirement: &70254082418900 !ruby/object:Gem::Requirement
93
+ requirement: &70133666870580 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,7 +98,7 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70254082418900
101
+ version_requirements: *70133666870580
102
102
  description: Codifies best practices and configuration when consuming from multiple
103
103
  AMQP brokers simultaneously
104
104
  email: brendan@soundcloud.com
@@ -145,7 +145,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
145
145
  version: '0'
146
146
  segments:
147
147
  - 0
148
- hash: -3485289933541313982
148
+ hash: -1532574760131102209
149
149
  required_rubygems_version: !ruby/object:Gem::Requirement
150
150
  none: false
151
151
  requirements: