hot_bunnies 1.4.0.pre1-java → 1.4.0.pre2-java
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/lib/hot_bunnies/queue.rb +26 -7
- data/lib/hot_bunnies/version.rb +1 -1
- metadata +2 -2
data/lib/hot_bunnies/queue.rb
CHANGED
@@ -115,7 +115,7 @@ module HotBunnies
|
|
115
115
|
|
116
116
|
def setup_consumer(options, callback)
|
117
117
|
if options.fetch(:blocking, true)
|
118
|
-
@consumer = BlockingCallbackConsumer.new(@channel, callback)
|
118
|
+
@consumer = BlockingCallbackConsumer.new(@channel, options[:buffer_size], callback)
|
119
119
|
else
|
120
120
|
if options[:executor]
|
121
121
|
@shut_down_executor = false
|
@@ -136,6 +136,7 @@ module HotBunnies
|
|
136
136
|
@callback = callback
|
137
137
|
@callback_arity = @callback.arity
|
138
138
|
@cancelled = false
|
139
|
+
@cancelling = false
|
139
140
|
end
|
140
141
|
|
141
142
|
def handleDelivery(consumer_tag, envelope, properties, body)
|
@@ -157,6 +158,7 @@ module HotBunnies
|
|
157
158
|
|
158
159
|
def cancel
|
159
160
|
channel.basic_cancel(consumer_tag)
|
161
|
+
@cancelling = true
|
160
162
|
end
|
161
163
|
|
162
164
|
def deliver(headers, message)
|
@@ -176,24 +178,35 @@ module HotBunnies
|
|
176
178
|
def initialize(channel, callback, executor)
|
177
179
|
super(channel, callback)
|
178
180
|
@executor = executor
|
181
|
+
@tasks = []
|
179
182
|
end
|
180
183
|
|
181
184
|
def deliver(headers, message)
|
182
|
-
@executor.
|
183
|
-
|
185
|
+
unless @executor.shutdown?
|
186
|
+
@executor.submit do
|
187
|
+
callback(headers, message)
|
188
|
+
end
|
184
189
|
end
|
185
190
|
end
|
186
191
|
end
|
187
192
|
|
188
193
|
class BlockingCallbackConsumer < CallbackConsumer
|
189
|
-
|
194
|
+
import 'java.util.concurrent.LinkedBlockingQueue'
|
195
|
+
import 'java.util.concurrent.ArrayBlockingQueue'
|
196
|
+
import 'java.util.concurrent.TimeUnit'
|
197
|
+
|
198
|
+
def initialize(channel, buffer_size, callback)
|
190
199
|
super(channel, callback)
|
191
|
-
|
200
|
+
if buffer_size
|
201
|
+
@internal_queue = ArrayBlockingQueue.new(buffer_size)
|
202
|
+
else
|
203
|
+
@internal_queue = LinkedBlockingQueue.new
|
204
|
+
end
|
192
205
|
end
|
193
206
|
|
194
207
|
def start
|
195
208
|
until @cancelled
|
196
|
-
pair = @internal_queue.poll(1,
|
209
|
+
pair = @internal_queue.poll(1, TimeUnit::SECONDS)
|
197
210
|
callback(*pair) if pair
|
198
211
|
end
|
199
212
|
while (pair = @internal_queue.poll)
|
@@ -202,7 +215,13 @@ module HotBunnies
|
|
202
215
|
end
|
203
216
|
|
204
217
|
def deliver(*pair)
|
205
|
-
@
|
218
|
+
if @cancelling || @cancelled
|
219
|
+
@internal_queue.offer(pair)
|
220
|
+
else
|
221
|
+
until @internal_queue.offer(pair, 1, TimeUnit::SECONDS)
|
222
|
+
break if @cancelling || @cancelled
|
223
|
+
end
|
224
|
+
end
|
206
225
|
end
|
207
226
|
end
|
208
227
|
|
data/lib/hot_bunnies/version.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: hot_bunnies
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease: 6
|
5
|
-
version: 1.4.0.
|
5
|
+
version: 1.4.0.pre2
|
6
6
|
platform: java
|
7
7
|
authors:
|
8
8
|
- Theo Hultberg
|
@@ -11,7 +11,7 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2012-06-
|
14
|
+
date: 2012-06-27 00:00:00 Z
|
15
15
|
dependencies: []
|
16
16
|
|
17
17
|
description: A object oriented interface to RabbitMQ that uses the Java driver under the hood
|