beetle 0.3.0.rc.15 → 0.3.0.rc.16
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/examples/test_publisher.rb +32 -0
- data/lib/beetle/handler.rb +4 -1
- data/lib/beetle/version.rb +1 -1
- data/test/beetle/handler_test.rb +8 -1
- metadata +158 -170
@@ -0,0 +1,32 @@
|
|
1
|
+
# attempts.rb
|
2
|
+
# this example shows you how to use the exception limiting feature of beetle
|
3
|
+
# it allows you to control the number of retries your handler will go through
|
4
|
+
# with one message before giving up on it
|
5
|
+
#
|
6
|
+
# ! check the examples/README.rdoc for information on starting your redis/rabbit !
|
7
|
+
#
|
8
|
+
# start it with ruby attempts.rb
|
9
|
+
|
10
|
+
require "rubygems"
|
11
|
+
require File.expand_path("../lib/beetle", File.dirname(__FILE__))
|
12
|
+
require "eventmachine"
|
13
|
+
|
14
|
+
# set Beetle log level to info, less noisy than debug
|
15
|
+
Beetle.config.logger.level = Logger::INFO
|
16
|
+
|
17
|
+
# setup client
|
18
|
+
client = Beetle::Client.new
|
19
|
+
client.register_message(:test)
|
20
|
+
|
21
|
+
n = 0
|
22
|
+
EM.run do
|
23
|
+
EM.add_periodic_timer(0.1) do
|
24
|
+
data = (n+=1)
|
25
|
+
client.logger.info "publishing #{data}"
|
26
|
+
client.publish(:test, data)
|
27
|
+
end
|
28
|
+
trap("INT") do
|
29
|
+
client.stop_publishing
|
30
|
+
EM.stop_event_loop
|
31
|
+
end
|
32
|
+
end
|
data/lib/beetle/handler.rb
CHANGED
@@ -29,6 +29,7 @@ module Beetle
|
|
29
29
|
@processor = processor
|
30
30
|
@error_callback = opts[:errback]
|
31
31
|
@failure_callback = opts[:failback]
|
32
|
+
@__handler_called__ = nil
|
32
33
|
end
|
33
34
|
|
34
35
|
# called when a message should be processed. if the message was caused by an RPC, the
|
@@ -43,6 +44,8 @@ module Beetle
|
|
43
44
|
else
|
44
45
|
process
|
45
46
|
end
|
47
|
+
ensure
|
48
|
+
@__handler_called__ = true
|
46
49
|
end
|
47
50
|
|
48
51
|
# called for message processing if no processor was specfied when the handler instance
|
@@ -75,7 +78,7 @@ module Beetle
|
|
75
78
|
|
76
79
|
# should not be overriden in subclasses
|
77
80
|
def processing_completed
|
78
|
-
completed
|
81
|
+
completed if @__handler_called__
|
79
82
|
rescue Exception
|
80
83
|
Beetle::reraise_expectation_errors!
|
81
84
|
end
|
data/lib/beetle/version.rb
CHANGED
data/test/beetle/handler_test.rb
CHANGED
@@ -103,8 +103,15 @@ module Beetle
|
|
103
103
|
end
|
104
104
|
|
105
105
|
test "should silently rescue exceptions in the processing_completed call" do
|
106
|
-
handler = Handler.create(lambda {})
|
106
|
+
handler = Handler.create(lambda {|m|})
|
107
107
|
handler.expects(:completed).raises(Exception)
|
108
|
+
handler.call(mock("message"))
|
109
|
+
assert_nothing_raised {handler.processing_completed}
|
110
|
+
end
|
111
|
+
|
112
|
+
test "should not invoke completed method when the hander was never called" do
|
113
|
+
handler = Handler.create(lambda {})
|
114
|
+
handler.expects(:completed).never
|
108
115
|
assert_nothing_raised {handler.processing_completed}
|
109
116
|
end
|
110
117
|
|
metadata
CHANGED
@@ -1,17 +1,10 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: beetle
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.0.rc.16
|
5
5
|
prerelease: 6
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 3
|
9
|
-
- 0
|
10
|
-
- rc
|
11
|
-
- 15
|
12
|
-
version: 0.3.0.rc.15
|
13
6
|
platform: ruby
|
14
|
-
authors:
|
7
|
+
authors:
|
15
8
|
- Stefan Kaes
|
16
9
|
- Pascal Friederich
|
17
10
|
- Ali Jelveh
|
@@ -20,183 +13,181 @@ authors:
|
|
20
13
|
autorequire:
|
21
14
|
bindir: bin
|
22
15
|
cert_chain: []
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
requirement:
|
16
|
+
date: 2012-11-20 00:00:00.000000000 Z
|
17
|
+
dependencies:
|
18
|
+
- !ruby/object:Gem::Dependency
|
19
|
+
name: uuid4r
|
20
|
+
requirement: !ruby/object:Gem::Requirement
|
28
21
|
none: false
|
29
|
-
requirements:
|
30
|
-
- -
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
hash: 31
|
33
|
-
segments:
|
34
|
-
- 0
|
35
|
-
- 1
|
36
|
-
- 2
|
22
|
+
requirements:
|
23
|
+
- - ! '>='
|
24
|
+
- !ruby/object:Gem::Version
|
37
25
|
version: 0.1.2
|
38
|
-
version_requirements: *id001
|
39
|
-
prerelease: false
|
40
26
|
type: :runtime
|
41
|
-
name: uuid4r
|
42
|
-
- !ruby/object:Gem::Dependency
|
43
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
44
|
-
none: false
|
45
|
-
requirements:
|
46
|
-
- - "="
|
47
|
-
- !ruby/object:Gem::Version
|
48
|
-
hash: 17
|
49
|
-
segments:
|
50
|
-
- 0
|
51
|
-
- 7
|
52
|
-
- 9
|
53
|
-
version: 0.7.9
|
54
|
-
version_requirements: *id002
|
55
27
|
prerelease: false
|
56
|
-
|
28
|
+
version_requirements: !ruby/object:Gem::Requirement
|
29
|
+
none: false
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.1.2
|
34
|
+
- !ruby/object:Gem::Dependency
|
57
35
|
name: bunny
|
58
|
-
|
59
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
36
|
+
requirement: !ruby/object:Gem::Requirement
|
60
37
|
none: false
|
61
|
-
requirements:
|
62
|
-
- -
|
63
|
-
- !ruby/object:Gem::Version
|
64
|
-
|
65
|
-
segments:
|
66
|
-
- 3
|
67
|
-
- 0
|
68
|
-
- 1
|
69
|
-
version: 3.0.1
|
70
|
-
version_requirements: *id003
|
71
|
-
prerelease: false
|
38
|
+
requirements:
|
39
|
+
- - '='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 0.7.9
|
72
42
|
type: :runtime
|
43
|
+
prerelease: false
|
44
|
+
version_requirements: !ruby/object:Gem::Requirement
|
45
|
+
none: false
|
46
|
+
requirements:
|
47
|
+
- - '='
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: 0.7.9
|
50
|
+
- !ruby/object:Gem::Dependency
|
73
51
|
name: redis
|
74
|
-
|
75
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
52
|
+
requirement: !ruby/object:Gem::Requirement
|
76
53
|
none: false
|
77
|
-
requirements:
|
78
|
-
- -
|
79
|
-
- !ruby/object:Gem::Version
|
80
|
-
|
81
|
-
segments:
|
82
|
-
- 0
|
83
|
-
- 4
|
84
|
-
- 5
|
85
|
-
version: 0.4.5
|
86
|
-
version_requirements: *id004
|
87
|
-
prerelease: false
|
54
|
+
requirements:
|
55
|
+
- - '='
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: 3.0.1
|
88
58
|
type: :runtime
|
59
|
+
prerelease: false
|
60
|
+
version_requirements: !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - '='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 3.0.1
|
66
|
+
- !ruby/object:Gem::Dependency
|
89
67
|
name: hiredis
|
90
|
-
|
91
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
68
|
+
requirement: !ruby/object:Gem::Requirement
|
92
69
|
none: false
|
93
|
-
requirements:
|
94
|
-
- -
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
|
97
|
-
segments:
|
98
|
-
- 0
|
99
|
-
- 9
|
100
|
-
- 3
|
101
|
-
version: 0.9.3
|
102
|
-
version_requirements: *id005
|
103
|
-
prerelease: false
|
70
|
+
requirements:
|
71
|
+
- - '='
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: 0.4.5
|
104
74
|
type: :runtime
|
75
|
+
prerelease: false
|
76
|
+
version_requirements: !ruby/object:Gem::Requirement
|
77
|
+
none: false
|
78
|
+
requirements:
|
79
|
+
- - '='
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: 0.4.5
|
82
|
+
- !ruby/object:Gem::Dependency
|
105
83
|
name: amq-client
|
106
|
-
|
107
|
-
requirement: &id006 !ruby/object:Gem::Requirement
|
84
|
+
requirement: !ruby/object:Gem::Requirement
|
108
85
|
none: false
|
109
|
-
requirements:
|
110
|
-
- -
|
111
|
-
- !ruby/object:Gem::Version
|
112
|
-
hash: 61
|
113
|
-
segments:
|
114
|
-
- 0
|
115
|
-
- 9
|
116
|
-
- 3
|
86
|
+
requirements:
|
87
|
+
- - '='
|
88
|
+
- !ruby/object:Gem::Version
|
117
89
|
version: 0.9.3
|
118
|
-
version_requirements: *id006
|
119
|
-
prerelease: false
|
120
90
|
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
none: false
|
94
|
+
requirements:
|
95
|
+
- - '='
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: 0.9.3
|
98
|
+
- !ruby/object:Gem::Dependency
|
121
99
|
name: amq-protocol
|
122
|
-
|
123
|
-
requirement: &id007 !ruby/object:Gem::Requirement
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
124
101
|
none: false
|
125
|
-
requirements:
|
126
|
-
- -
|
127
|
-
- !ruby/object:Gem::Version
|
128
|
-
|
129
|
-
segments:
|
130
|
-
- 0
|
131
|
-
- 9
|
132
|
-
- 6
|
133
|
-
version: 0.9.6
|
134
|
-
version_requirements: *id007
|
135
|
-
prerelease: false
|
102
|
+
requirements:
|
103
|
+
- - '='
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: 0.9.3
|
136
106
|
type: :runtime
|
107
|
+
prerelease: false
|
108
|
+
version_requirements: !ruby/object:Gem::Requirement
|
109
|
+
none: false
|
110
|
+
requirements:
|
111
|
+
- - '='
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: 0.9.3
|
114
|
+
- !ruby/object:Gem::Dependency
|
137
115
|
name: amqp
|
138
|
-
|
139
|
-
requirement: &id008 !ruby/object:Gem::Requirement
|
116
|
+
requirement: !ruby/object:Gem::Requirement
|
140
117
|
none: false
|
141
|
-
requirements:
|
142
|
-
- -
|
143
|
-
- !ruby/object:Gem::Version
|
144
|
-
|
145
|
-
segments:
|
146
|
-
- 2
|
147
|
-
- 3
|
148
|
-
- 4
|
149
|
-
version: 2.3.4
|
150
|
-
version_requirements: *id008
|
151
|
-
prerelease: false
|
118
|
+
requirements:
|
119
|
+
- - '='
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: 0.9.6
|
152
122
|
type: :runtime
|
123
|
+
prerelease: false
|
124
|
+
version_requirements: !ruby/object:Gem::Requirement
|
125
|
+
none: false
|
126
|
+
requirements:
|
127
|
+
- - '='
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: 0.9.6
|
130
|
+
- !ruby/object:Gem::Dependency
|
153
131
|
name: activesupport
|
154
|
-
|
155
|
-
requirement: &id009 !ruby/object:Gem::Requirement
|
132
|
+
requirement: !ruby/object:Gem::Requirement
|
156
133
|
none: false
|
157
|
-
requirements:
|
158
|
-
- -
|
159
|
-
- !ruby/object:Gem::Version
|
160
|
-
|
161
|
-
segments:
|
162
|
-
- 0
|
163
|
-
- 2
|
164
|
-
- 1
|
165
|
-
version: 0.2.1
|
166
|
-
version_requirements: *id009
|
167
|
-
prerelease: false
|
134
|
+
requirements:
|
135
|
+
- - ! '>='
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: 2.3.4
|
168
138
|
type: :runtime
|
139
|
+
prerelease: false
|
140
|
+
version_requirements: !ruby/object:Gem::Requirement
|
141
|
+
none: false
|
142
|
+
requirements:
|
143
|
+
- - ! '>='
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: 2.3.4
|
146
|
+
- !ruby/object:Gem::Dependency
|
169
147
|
name: eventmachine_httpserver
|
170
|
-
|
171
|
-
requirement: &id010 !ruby/object:Gem::Requirement
|
148
|
+
requirement: !ruby/object:Gem::Requirement
|
172
149
|
none: false
|
173
|
-
requirements:
|
174
|
-
- -
|
175
|
-
- !ruby/object:Gem::Version
|
176
|
-
|
177
|
-
segments:
|
178
|
-
- 1
|
179
|
-
- 0
|
180
|
-
- 10
|
181
|
-
version: 1.0.10
|
182
|
-
version_requirements: *id010
|
183
|
-
prerelease: false
|
150
|
+
requirements:
|
151
|
+
- - ! '>='
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: 0.2.1
|
184
154
|
type: :runtime
|
155
|
+
prerelease: false
|
156
|
+
version_requirements: !ruby/object:Gem::Requirement
|
157
|
+
none: false
|
158
|
+
requirements:
|
159
|
+
- - ! '>='
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
version: 0.2.1
|
162
|
+
- !ruby/object:Gem::Dependency
|
185
163
|
name: daemons
|
164
|
+
requirement: !ruby/object:Gem::Requirement
|
165
|
+
none: false
|
166
|
+
requirements:
|
167
|
+
- - ! '>='
|
168
|
+
- !ruby/object:Gem::Version
|
169
|
+
version: 1.0.10
|
170
|
+
type: :runtime
|
171
|
+
prerelease: false
|
172
|
+
version_requirements: !ruby/object:Gem::Requirement
|
173
|
+
none: false
|
174
|
+
requirements:
|
175
|
+
- - ! '>='
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
version: 1.0.10
|
186
178
|
description: A highly available, reliable messaging infrastructure
|
187
179
|
email: opensource@xing.com
|
188
|
-
executables:
|
180
|
+
executables:
|
189
181
|
- beetle
|
190
182
|
extensions: []
|
191
|
-
|
192
|
-
extra_rdoc_files:
|
183
|
+
extra_rdoc_files:
|
193
184
|
- examples/README.rdoc
|
194
185
|
- features/README.rdoc
|
195
186
|
- README.rdoc
|
196
187
|
- REDIS_AUTO_FAILOVER.rdoc
|
197
188
|
- RELEASE_NOTES.rdoc
|
198
189
|
- MIT-LICENSE
|
199
|
-
files:
|
190
|
+
files:
|
200
191
|
- examples/attempts.rb
|
201
192
|
- examples/handler_class.rb
|
202
193
|
- examples/handling_exceptions.rb
|
@@ -207,6 +198,7 @@ files:
|
|
207
198
|
- examples/redundant.rb
|
208
199
|
- examples/rpc.rb
|
209
200
|
- examples/simple.rb
|
201
|
+
- examples/test_publisher.rb
|
210
202
|
- lib/beetle/base.rb
|
211
203
|
- lib/beetle/client.rb
|
212
204
|
- lib/beetle/commands/configuration_client.rb
|
@@ -268,40 +260,36 @@ files:
|
|
268
260
|
- bin/beetle
|
269
261
|
homepage: http://xing.github.com/beetle/
|
270
262
|
licenses: []
|
271
|
-
|
272
|
-
|
273
|
-
|
263
|
+
post_install_message: ! " *********************************************************************************************\n\n
|
264
|
+
\ Please install the SystemTimer gem if you're running a ruby version < 1.9:\n
|
265
|
+
\ `gem install SystemTimer -v '=1.2.1'`\n See: http://ph7spot.com/musings/system-timer\n\n
|
266
|
+
\ *********************************************************************************************\n"
|
267
|
+
rdoc_options:
|
274
268
|
- --charset=UTF-8
|
275
|
-
require_paths:
|
269
|
+
require_paths:
|
276
270
|
- lib
|
277
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
271
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
278
272
|
none: false
|
279
|
-
requirements:
|
280
|
-
- -
|
281
|
-
- !ruby/object:Gem::Version
|
282
|
-
|
283
|
-
segments:
|
273
|
+
requirements:
|
274
|
+
- - ! '>='
|
275
|
+
- !ruby/object:Gem::Version
|
276
|
+
version: '0'
|
277
|
+
segments:
|
284
278
|
- 0
|
285
|
-
|
286
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
279
|
+
hash: -3446454574049422431
|
280
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
287
281
|
none: false
|
288
|
-
requirements:
|
289
|
-
- -
|
290
|
-
- !ruby/object:Gem::Version
|
291
|
-
hash: 21
|
292
|
-
segments:
|
293
|
-
- 1
|
294
|
-
- 3
|
295
|
-
- 7
|
282
|
+
requirements:
|
283
|
+
- - ! '>='
|
284
|
+
- !ruby/object:Gem::Version
|
296
285
|
version: 1.3.7
|
297
286
|
requirements: []
|
298
|
-
|
299
287
|
rubyforge_project:
|
300
288
|
rubygems_version: 1.8.24
|
301
289
|
signing_key:
|
302
290
|
specification_version: 3
|
303
291
|
summary: High Availability AMQP Messaging with Redundant Queues
|
304
|
-
test_files:
|
292
|
+
test_files:
|
305
293
|
- test/beetle/amqp_gem_behavior_test.rb
|
306
294
|
- test/beetle/base_test.rb
|
307
295
|
- test/beetle/beetle_test.rb
|