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.
@@ -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