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 +1 -1
- data/amqp-subscribe-many.gemspec +2 -2
- data/lib/messaging/client.rb +48 -2
- data/lib/messaging/consumer.rb +0 -14
- data/lib/messaging/producer.rb +0 -10
- metadata +19 -19
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.
|
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"
|
data/amqp-subscribe-many.gemspec
CHANGED
@@ -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.
|
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-
|
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 = [
|
data/lib/messaging/client.rb
CHANGED
@@ -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
|
data/lib/messaging/consumer.rb
CHANGED
@@ -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.
|
data/lib/messaging/producer.rb
CHANGED
@@ -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.
|
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-
|
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: &
|
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: *
|
24
|
+
version_requirements: *70133666875920
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bundler
|
27
|
-
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: *
|
35
|
+
version_requirements: *70133666875100
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: minitest
|
38
|
-
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: *
|
46
|
+
version_requirements: *70133666874560
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: simplecov
|
49
|
-
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: *
|
57
|
+
version_requirements: *70133666873900
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: mocha
|
60
|
-
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: *
|
68
|
+
version_requirements: *70133666873040
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: jeweler
|
71
|
-
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: *
|
79
|
+
version_requirements: *70133666872200
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: redcarpet
|
82
|
-
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: *
|
90
|
+
version_requirements: *70133666871380
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: yard
|
93
|
-
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: *
|
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: -
|
148
|
+
hash: -1532574760131102209
|
149
149
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
150
150
|
none: false
|
151
151
|
requirements:
|