amqp-subscribe-many 0.1.5 → 0.1.6
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 +21 -6
- 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.6"
|
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.6"
|
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-19}
|
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
@@ -58,6 +58,8 @@ module Messaging
|
|
58
58
|
|
59
59
|
# Invoked when a message is received from any of the subscriptions.
|
60
60
|
#
|
61
|
+
# @param meta [AMQP::Header] A wrapper around the AMQP headers, and ruby-amqp metadata
|
62
|
+
# @param payload [String] The message payload
|
61
63
|
# @raise [NotImplementedError]
|
62
64
|
# @api protected
|
63
65
|
def on_message(meta, payload)
|
@@ -115,14 +117,27 @@ module Messaging
|
|
115
117
|
ex = declare_exchange(channel, exchange, type, config.exchange_options)
|
116
118
|
q = declare_queue(channel, ex, queue, key, config.queue_options)
|
117
119
|
|
118
|
-
|
120
|
+
# Expliclity create an AMQP::Consumer rather than using
|
121
|
+
# AMQP::Queue.subscription, which is a global singleton
|
122
|
+
# and prevents the creation of multiple subscriptions
|
123
|
+
AMQP::Consumer.new(channel, q).consume.on_delivery do |meta, payload|
|
119
124
|
log.debug("Receieved message on channel #{meta.channel.id} from queue #{queue.inspect}")
|
120
125
|
|
121
|
-
# If
|
122
|
-
#
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
+
# If an exception is raised in on_message, the message will not be
|
127
|
+
# acknowledged and the exception will be logged and re-raised
|
128
|
+
begin
|
129
|
+
on_message(meta, payload)
|
130
|
+
|
131
|
+
meta.ack
|
132
|
+
rescue => ex
|
133
|
+
log.error("Exception: #{ex}, " \
|
134
|
+
"Payload: #{payload.inspect}, " \
|
135
|
+
"Headers: #{meta.headers.inspect}\n" \
|
136
|
+
"Backtrace:\n#{ex.backtrace.join('\n')}")
|
137
|
+
|
138
|
+
# Re-raise the exception
|
139
|
+
raise ex
|
140
|
+
end
|
126
141
|
end
|
127
142
|
end
|
128
143
|
|
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.6
|
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-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: amqp
|
16
|
-
requirement: &
|
16
|
+
requirement: &70235814586420 !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: *70235814586420
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bundler
|
27
|
-
requirement: &
|
27
|
+
requirement: &70235814585520 !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: *70235814585520
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: minitest
|
38
|
-
requirement: &
|
38
|
+
requirement: &70235814584860 !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: *70235814584860
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: simplecov
|
49
|
-
requirement: &
|
49
|
+
requirement: &70235814584100 !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: *70235814584100
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: mocha
|
60
|
-
requirement: &
|
60
|
+
requirement: &70235814583200 !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: *70235814583200
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: jeweler
|
71
|
-
requirement: &
|
71
|
+
requirement: &70235814582520 !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: *70235814582520
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: redcarpet
|
82
|
-
requirement: &
|
82
|
+
requirement: &70235814581820 !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: *70235814581820
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: yard
|
93
|
-
requirement: &
|
93
|
+
requirement: &70235814581200 !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: *70235814581200
|
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: 1747811653672625853
|
149
149
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
150
150
|
none: false
|
151
151
|
requirements:
|