beetle 0.3.0.rc.15 → 0.3.0.rc.16

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Beetle
2
- VERSION = "0.3.0.rc.15"
2
+ VERSION = "0.3.0.rc.16"
3
3
  end
@@ -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
- hash: -946228374
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
- date: 2012-07-23 00:00:00 Z
25
- dependencies:
26
- - !ruby/object:Gem::Dependency
27
- requirement: &id001 !ruby/object:Gem::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
- type: :runtime
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
- - !ruby/object:Gem::Dependency
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
- hash: 5
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
- - !ruby/object:Gem::Dependency
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
- hash: 5
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
- - !ruby/object:Gem::Dependency
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
- hash: 61
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
- - !ruby/object:Gem::Dependency
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
- - !ruby/object:Gem::Dependency
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
- hash: 55
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
- - !ruby/object:Gem::Dependency
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
- hash: 11
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
- - !ruby/object:Gem::Dependency
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
- hash: 21
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
- - !ruby/object:Gem::Dependency
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
- hash: 3
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
- post_install_message: " *********************************************************************************************\n\n Please install the SystemTimer gem if you're running a ruby version < 1.9:\n `gem install SystemTimer -v '=1.2.1'`\n See: http://ph7spot.com/musings/system-timer\n\n *********************************************************************************************\n"
273
- rdoc_options:
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
- hash: 3
283
- segments:
273
+ requirements:
274
+ - - ! '>='
275
+ - !ruby/object:Gem::Version
276
+ version: '0'
277
+ segments:
284
278
  - 0
285
- version: "0"
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