march_hare 2.18.0-java → 2.19.0-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.
- checksums.yaml +4 -4
- data/lib/ext/rabbitmq-client.jar +0 -0
- data/lib/march_hare/channel.rb +3 -3
- data/lib/march_hare/exchange.rb +1 -1
- data/lib/march_hare/queue.rb +1 -1
- data/lib/march_hare/session.rb +26 -3
- data/lib/march_hare/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8dc736328193c189024f9025c51e1950be461b72
|
4
|
+
data.tar.gz: 8c7997571606bddc54fefd82f4902cddda6b0605
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 689c4fb17b918f9a1d7b46810ae034d0f39a5e1a57fa5bf3690da5d57382b2aac8752ae6a4f9ad98d95a41fc653e52531b1d9337c2e24b05d2525beecb6b9001
|
7
|
+
data.tar.gz: 84bf5d5c28da7fb429024f6978243362f075f31fbb1b14fd8856f4478db2ad6f64816adfe380a11eb0ea4b1a0726491a0caeb53dc285dad9751a9c27723267a4
|
data/lib/ext/rabbitmq-client.jar
CHANGED
Binary file
|
data/lib/march_hare/channel.rb
CHANGED
@@ -226,19 +226,19 @@ module MarchHare
|
|
226
226
|
# Recovery feature.
|
227
227
|
#
|
228
228
|
def recover_prefetch_setting
|
229
|
-
basic_qos(@prefetch_count) if @prefetch_count
|
229
|
+
basic_qos(@prefetch_count) if defined?(@prefetch_count) && @prefetch_count
|
230
230
|
end
|
231
231
|
|
232
232
|
# Recovers publisher confirms mode. Used by the Automatic Network Failure
|
233
233
|
# Recovery feature.
|
234
234
|
def recover_confirm_mode
|
235
|
-
confirm_select if @confirm_mode
|
235
|
+
confirm_select if defined?(@confirm_mode) && @confirm_mode
|
236
236
|
end
|
237
237
|
|
238
238
|
# Recovers transaction mode. Used by the Automatic Network Failure
|
239
239
|
# Recovery feature.
|
240
240
|
def recover_tx_mode
|
241
|
-
tx_select if @tx_mode
|
241
|
+
tx_select if defined?(@tx_mode) && @tx_mode
|
242
242
|
end
|
243
243
|
|
244
244
|
# Recovers exchanges. Used by the Automatic Network Failure
|
data/lib/march_hare/exchange.rb
CHANGED
@@ -57,7 +57,7 @@ module MarchHare
|
|
57
57
|
# @option opts [Boolean] :mandatory Should the message be returned if it cannot be routed to any queue?
|
58
58
|
# @option opts [Hash] :properties Messages and delivery properties
|
59
59
|
#
|
60
|
-
# * :timestamp (
|
60
|
+
# * :timestamp (Time) A timestamp associated with this message
|
61
61
|
# * :expiration (Integer) Expiration time after which the message will be deleted
|
62
62
|
# * :type (String) Message type, e.g. what type of event or command this message represents. Can be any string
|
63
63
|
# * :reply_to (String) Queue name other apps should send the response to
|
data/lib/march_hare/queue.rb
CHANGED
data/lib/march_hare/session.rb
CHANGED
@@ -36,6 +36,7 @@ module MarchHare
|
|
36
36
|
#
|
37
37
|
# @param [Hash] options Connection options
|
38
38
|
#
|
39
|
+
# @option options [Numeric] :executor_shutdown_timeout (30.0) when recovering from a network failure how long should we wait for the current threadpool to finish handling its messages
|
39
40
|
# @option options [String] :host ("127.0.0.1") Hostname or IP address to connect to
|
40
41
|
# @option options [Integer] :port (5672) Port RabbitMQ listens on
|
41
42
|
# @option options [String] :username ("guest") Username
|
@@ -125,6 +126,8 @@ module MarchHare
|
|
125
126
|
# executors cannot be restarted after shutdown,
|
126
127
|
# so we really need a factory here. MK.
|
127
128
|
@executor_factory = opts[:executor_factory] || build_executor_factory_from(opts)
|
129
|
+
# we expect this option to be specified in seconds
|
130
|
+
@executor_shutdown_timeout = opts.fetch(:executor_shutdown_timeout, 30.0)
|
128
131
|
|
129
132
|
@hosts = self.class.hosts_from(opts)
|
130
133
|
@default_host_selection_strategy = lambda { |hosts| hosts.sample }
|
@@ -165,6 +168,14 @@ module MarchHare
|
|
165
168
|
else
|
166
169
|
@connection.create_channel
|
167
170
|
end
|
171
|
+
if jc.nil?
|
172
|
+
error_message = <<-MSG
|
173
|
+
Unable to create a channel. This is likely due to having a channel_max setting
|
174
|
+
on the rabbitmq broker (see https://www.rabbitmq.com/configure.html).
|
175
|
+
There are currently #{@channels.size} channels on this connection.
|
176
|
+
MSG
|
177
|
+
raise ::MarchHare::ChannelError.new(error_message, false)
|
178
|
+
end
|
168
179
|
|
169
180
|
ch = Channel.new(self, jc)
|
170
181
|
register_channel(ch)
|
@@ -238,7 +249,7 @@ module MarchHare
|
|
238
249
|
|
239
250
|
# @private
|
240
251
|
def disable_automatic_recovery
|
241
|
-
@
|
252
|
+
@connection.remove_shutdown_listener(@automatic_recovery_hook) if @automatic_recovery_hook
|
242
253
|
end
|
243
254
|
|
244
255
|
# Begins automatic connection recovery (typically only used internally
|
@@ -257,7 +268,6 @@ module MarchHare
|
|
257
268
|
end
|
258
269
|
end
|
259
270
|
end
|
260
|
-
@thread_pool = ThreadPools.dynamically_growing
|
261
271
|
self.recover_shutdown_hooks(new_connection)
|
262
272
|
|
263
273
|
# sorting channels by id means that the cases like the following:
|
@@ -499,6 +509,7 @@ module MarchHare
|
|
499
509
|
|
500
510
|
converting_rjc_exceptions_to_ruby do
|
501
511
|
if @executor_factory
|
512
|
+
shut_down_executor_pool_and_await_timeout
|
502
513
|
@executor = @executor_factory.call
|
503
514
|
@cf.new_connection(@executor)
|
504
515
|
else
|
@@ -512,6 +523,7 @@ module MarchHare
|
|
512
523
|
@cf.uri = uri
|
513
524
|
converting_rjc_exceptions_to_ruby do
|
514
525
|
if @executor_factory
|
526
|
+
shut_down_executor_pool_and_await_timeout
|
515
527
|
@executor = @executor_factory.call
|
516
528
|
@cf.new_connection(@executor)
|
517
529
|
else
|
@@ -522,7 +534,18 @@ module MarchHare
|
|
522
534
|
|
523
535
|
# @private
|
524
536
|
def maybe_shut_down_executor
|
525
|
-
@executor.shutdown if @executor
|
537
|
+
@executor.shutdown if defined?(@executor) && @executor
|
538
|
+
end
|
539
|
+
|
540
|
+
def shut_down_executor_pool_and_await_timeout
|
541
|
+
return unless defined?(@executor) && @executor
|
542
|
+
ms_to_wait = (@executor_shutdown_timeout * 1000).to_i
|
543
|
+
@executor.shutdown()
|
544
|
+
unless @executor.awaitTermination(ms_to_wait, java.util.concurrent.TimeUnit::MILLISECONDS)
|
545
|
+
@executor.shutdownNow()
|
546
|
+
end
|
547
|
+
rescue java.lang.InterruptedException
|
548
|
+
#no op, just means we got a forced shutdown
|
526
549
|
end
|
527
550
|
|
528
551
|
# Makes it easier to construct executor factories.
|
data/lib/march_hare/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: march_hare
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.19.0
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Theo Hultberg
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-10-25 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: RabbitMQ client for JRuby built around the official RabbitMQ Java client
|
15
15
|
email:
|
@@ -55,7 +55,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
55
55
|
version: '0'
|
56
56
|
requirements: []
|
57
57
|
rubyforge_project: march_hare
|
58
|
-
rubygems_version: 2.4
|
58
|
+
rubygems_version: 2.6.4
|
59
59
|
signing_key:
|
60
60
|
specification_version: 4
|
61
61
|
summary: RabbitMQ client for JRuby built around the official RabbitMQ Java client
|