protobuf-nats 0.1.1 → 0.1.2
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/protobuf/nats/runner.rb +1 -0
- data/lib/protobuf/nats/server.rb +7 -5
- data/lib/protobuf/nats/version.rb +1 -1
- data/lib/protobuf/nats.rb +1 -2
- data/protobuf-nats.gemspec +1 -2
- metadata +6 -21
- data/lib/protobuf/nats/fixed_thread_pool_with_no_queue.rb +0 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e444dd3193486c805f44d670ca6aceca10f7df3
|
4
|
+
data.tar.gz: 2f0ed9b4431fc0379f41348fca8820dc57953421
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b99622db5416e0626861531c8777f9207a23b5a3afba48211db0bf312f92fee1f49e71eeca0dc5621614b6452c439c96c329546281b823c2563a41a9f167f6bd
|
7
|
+
data.tar.gz: a0a52c9c909f552a2b01bfce3eb0a9fc18b2fd424f99c9c8301182526dd9ea69bac3bbdab5977f3b1f06f6efe79230ceb9fe332973d921dea86439e7b94fbdbe
|
data/lib/protobuf/nats/runner.rb
CHANGED
data/lib/protobuf/nats/server.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require "active_support/core_ext/class/subclasses"
|
2
|
-
require "protobuf/nats/fixed_thread_pool_with_no_queue"
|
3
2
|
require "protobuf/rpc/server"
|
4
3
|
require "protobuf/rpc/service"
|
5
4
|
|
@@ -19,7 +18,7 @@ module Protobuf
|
|
19
18
|
@nats = options[:client] || ::NATS::IO::Client.new
|
20
19
|
@nats.connect(::Protobuf::Nats.config.connection_options)
|
21
20
|
|
22
|
-
@thread_pool = ::
|
21
|
+
@thread_pool = ::Concurrent::FixedThreadPool.new(options[:threads], :max_queue => options[:threads])
|
23
22
|
|
24
23
|
@subscriptions = []
|
25
24
|
end
|
@@ -29,9 +28,7 @@ module Protobuf
|
|
29
28
|
end
|
30
29
|
|
31
30
|
def execute_request_promise(request_data, reply_id)
|
32
|
-
::Concurrent::Promise.new(:executor => thread_pool).then do
|
33
|
-
# Publish an ACK.
|
34
|
-
nats.publish(reply_id, ::Protobuf::Nats::Messages::ACK)
|
31
|
+
promise = ::Concurrent::Promise.new(:executor => thread_pool).then do
|
35
32
|
# Process request.
|
36
33
|
response_data = handle_request(request_data)
|
37
34
|
# Publish response.
|
@@ -42,6 +39,11 @@ module Protobuf
|
|
42
39
|
logger.error error.backtrace.join("\n")
|
43
40
|
end
|
44
41
|
end.execute
|
42
|
+
|
43
|
+
# Publish an ACK to signal the server has picked up the work.
|
44
|
+
nats.publish(reply_id, ::Protobuf::Nats::Messages::ACK)
|
45
|
+
|
46
|
+
promise
|
45
47
|
rescue ::Concurrent::RejectedExecutionError
|
46
48
|
nil
|
47
49
|
end
|
data/lib/protobuf/nats.rb
CHANGED
data/protobuf-nats.gemspec
CHANGED
@@ -30,8 +30,7 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
31
31
|
spec.require_paths = ["lib"]
|
32
32
|
|
33
|
-
spec.add_runtime_dependency "protobuf", "3.7
|
34
|
-
spec.add_runtime_dependency "connection_pool"
|
33
|
+
spec.add_runtime_dependency "protobuf", "~> 3.7"
|
35
34
|
spec.add_runtime_dependency "concurrent-ruby"
|
36
35
|
spec.add_runtime_dependency "nats-pure"
|
37
36
|
|
metadata
CHANGED
@@ -1,43 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: protobuf-nats
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brandon Dewitt
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-03-
|
11
|
+
date: 2017-03-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: protobuf
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 3.7.0.pre3
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - '='
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 3.7.0.pre3
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: connection_pool
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
17
|
+
- - "~>"
|
32
18
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
19
|
+
version: '3.7'
|
34
20
|
type: :runtime
|
35
21
|
prerelease: false
|
36
22
|
version_requirements: !ruby/object:Gem::Requirement
|
37
23
|
requirements:
|
38
|
-
- - "
|
24
|
+
- - "~>"
|
39
25
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
26
|
+
version: '3.7'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: concurrent-ruby
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -161,7 +147,6 @@ files:
|
|
161
147
|
- lib/protobuf/nats.rb
|
162
148
|
- lib/protobuf/nats/client.rb
|
163
149
|
- lib/protobuf/nats/config.rb
|
164
|
-
- lib/protobuf/nats/fixed_thread_pool_with_no_queue.rb
|
165
150
|
- lib/protobuf/nats/runner.rb
|
166
151
|
- lib/protobuf/nats/server.rb
|
167
152
|
- lib/protobuf/nats/version.rb
|
@@ -1,32 +0,0 @@
|
|
1
|
-
require "concurrent"
|
2
|
-
|
3
|
-
module Protobuf
|
4
|
-
module Nats
|
5
|
-
class FixedThreadPoolWithNoQueue < ::Concurrent::FixedThreadPool
|
6
|
-
def ns_initialize(opts)
|
7
|
-
min_length = opts.fetch(:min_threads, DEFAULT_MIN_POOL_SIZE).to_i
|
8
|
-
max_length = opts.fetch(:max_threads, DEFAULT_MAX_POOL_SIZE).to_i
|
9
|
-
idletime = opts.fetch(:idletime, DEFAULT_THREAD_IDLETIMEOUT).to_i
|
10
|
-
@fallback_policy = opts.fetch(:fallback_policy, :abort)
|
11
|
-
|
12
|
-
if ::Concurrent.on_jruby?
|
13
|
-
super(opts)
|
14
|
-
|
15
|
-
# We need to use a synchronous queue to ensure we only perform work
|
16
|
-
# when a thread is available.
|
17
|
-
queue = java.util.concurrent.SynchronousQueue.new
|
18
|
-
@executor = java.util.concurrent.ThreadPoolExecutor.new(
|
19
|
-
min_length, max_length,
|
20
|
-
idletime, java.util.concurrent.TimeUnit::SECONDS,
|
21
|
-
queue, FALLBACK_POLICY_CLASSES[@fallback_policy].new)
|
22
|
-
else
|
23
|
-
# MRI will take a max queue of -1 to mean no queue.
|
24
|
-
opts[:max_queue] = -1
|
25
|
-
super(opts)
|
26
|
-
end
|
27
|
-
|
28
|
-
@max_queue = -1
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|