amqp-subscribe-many 0.1.6 → 0.1.7
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/consumer.rb +33 -24
- 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.1.
|
52
|
+
gem.version = "0.1.7"
|
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.1.
|
8
|
+
s.version = "0.1.7"
|
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-
|
12
|
+
s.date = %q{2012-09-26}
|
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/consumer.rb
CHANGED
@@ -10,6 +10,9 @@ module Messaging
|
|
10
10
|
# Subscribe to a queue which will invoke {Messaging::Consumer#on_message}
|
11
11
|
# upon receiving a message.
|
12
12
|
#
|
13
|
+
# Evaluation: Lazy - #consume is required on the instance to evaluate
|
14
|
+
# and declare the subscriptions.
|
15
|
+
#
|
13
16
|
# @param exchange [String]
|
14
17
|
# @param type [String]
|
15
18
|
# @param queue [String]
|
@@ -42,6 +45,9 @@ module Messaging
|
|
42
45
|
# Opens connections, channels, and sets up and specified subscriptions
|
43
46
|
# invoking {Messaging::Consumer#on_message} when a payload is received.
|
44
47
|
#
|
48
|
+
# Evaluation: Eager - This is only required to evaluate and declare the
|
49
|
+
# subscriptions which have been deffered using class .subscribe
|
50
|
+
#
|
45
51
|
# @return [Messaging::Consumer]
|
46
52
|
# @api public
|
47
53
|
def consume
|
@@ -80,38 +86,19 @@ module Messaging
|
|
80
86
|
end
|
81
87
|
end
|
82
88
|
|
83
|
-
private
|
84
|
-
|
85
|
-
# @return [Array<AMQP::Connection>]
|
86
|
-
# @api private
|
87
|
-
def consumer_connections
|
88
|
-
@consumer_connections ||= config.consume_from.map do |uri|
|
89
|
-
open_connection(uri)
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
# @return [Array<AMQP::Channel>]
|
94
|
-
# @api private
|
95
|
-
def consumer_channels
|
96
|
-
@consumer_channels
|
97
|
-
end
|
98
|
-
|
99
|
-
# @return [Array<Array(String, String, String, String)>]
|
100
|
-
# @api private
|
101
|
-
def subscriptions
|
102
|
-
self.class.subscriptions
|
103
|
-
end
|
104
|
-
|
105
89
|
# Subscribe to a queue which will invoke the supplied block when
|
106
90
|
# a message is received.
|
107
91
|
# Additionally declaring a binding to the specified exchange/key pair.
|
108
92
|
#
|
93
|
+
# Evaluation: Eager - this will be evaluated when called.
|
94
|
+
# Calls to #consume are not required.
|
95
|
+
#
|
109
96
|
# @param exchange [String]
|
110
97
|
# @param type [String]
|
111
98
|
# @param queue [String]
|
112
99
|
# @param key [String]
|
113
100
|
# @return [Messaging::Consumer]
|
114
|
-
# @api
|
101
|
+
# @api public
|
115
102
|
def subscribe(exchange, type, queue, key)
|
116
103
|
consumer_channels.each do |channel|
|
117
104
|
ex = declare_exchange(channel, exchange, type, config.exchange_options)
|
@@ -143,6 +130,28 @@ module Messaging
|
|
143
130
|
|
144
131
|
self
|
145
132
|
end
|
146
|
-
end
|
147
133
|
|
134
|
+
private
|
135
|
+
|
136
|
+
# @return [Array<AMQP::Connection>]
|
137
|
+
# @api private
|
138
|
+
def consumer_connections
|
139
|
+
@consumer_connections ||= config.consume_from.map do |uri|
|
140
|
+
open_connection(uri)
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
# @return [Array<AMQP::Channel>]
|
145
|
+
# @api private
|
146
|
+
def consumer_channels
|
147
|
+
@consumer_channels
|
148
|
+
end
|
149
|
+
|
150
|
+
# @return [Array<Array(String, String, String, String)>]
|
151
|
+
# @api private
|
152
|
+
def subscriptions
|
153
|
+
self.class.subscriptions
|
154
|
+
end
|
155
|
+
|
156
|
+
end
|
148
157
|
end
|
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.
|
4
|
+
version: 0.1.7
|
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-
|
12
|
+
date: 2012-09-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: amqp
|
16
|
-
requirement: &
|
16
|
+
requirement: &70254082404240 !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: *70254082404240
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bundler
|
27
|
-
requirement: &
|
27
|
+
requirement: &70254082403360 !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: *70254082403360
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: minitest
|
38
|
-
requirement: &
|
38
|
+
requirement: &70254082402720 !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: *70254082402720
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: simplecov
|
49
|
-
requirement: &
|
49
|
+
requirement: &70254082401680 !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: *70254082401680
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: mocha
|
60
|
-
requirement: &
|
60
|
+
requirement: &70254082401060 !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: *70254082401060
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: jeweler
|
71
|
-
requirement: &
|
71
|
+
requirement: &70254082400280 !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: *70254082400280
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: redcarpet
|
82
|
-
requirement: &
|
82
|
+
requirement: &70254082399680 !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: *70254082399680
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: yard
|
93
|
-
requirement: &
|
93
|
+
requirement: &70254082418900 !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: *70254082418900
|
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: -3485289933541313982
|
149
149
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
150
150
|
none: false
|
151
151
|
requirements:
|