fastly_nsq 1.14.0 → 1.15.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6a40b18d43363206c94cbb448ba4ac54a2af31420a7fe89bada891d704513dde
4
- data.tar.gz: ce9b562df928b8d46466f52be7dab00aba65fb3a4f0301b0c76d5647fa8c639a
3
+ metadata.gz: 135337a9892fdb4e0ddb5d448cae0f9d298b66a3a1a2d53966b9ba1c3c31d734
4
+ data.tar.gz: 103ab244297b6e29b0f50fdda88881cbe030943b2d019dcf31f9080203b8d36b
5
5
  SHA512:
6
- metadata.gz: e33edc84dde18aed11956c98a412944d08694403c5237cb02b61bddfa0087e9589dd0cfdf214939c1446205bab79afe8ad7c24a0863231307e07e3353ca7548f
7
- data.tar.gz: 2f1f3cb6c36e13d181f742caec494ed31f0b4f2275ced090849b878ec8c40f6da6d852724ba7adc244aba7b0a99b1932459a5dc026e9e8cbd5998a77ad6dfc96
6
+ metadata.gz: 948bd9896a2709c88b2dffdfc8fa13de42d8f0d46f62c8cd635ff4323dd57a2be75cb805598a6878059a7416aa5e78f719cd4d026462833fe609168a46e8ebd9
7
+ data.tar.gz: 299eb6013dc14fd5f7fc84e752d75b60c633883e60517b9f507e7247bca4d6bb0a2ca4825cffc8b3836697208e76cac464a83ec25bda5119b852c724b25b82bc
@@ -1,7 +1,14 @@
1
1
  # Change Log
2
2
 
3
- ## [v1.14.0](https://github.com/fastly/fastly_nsq/tree/v1.14.0)
3
+ ## [v1.15.0](https://github.com/fastly/fastly_nsq/tree/v1.15.0)
4
4
 
5
+ [Full Changelog](https://github.com/fastly/fastly_nsq/compare/v1.14.0...v1.15.0)
6
+
7
+ **Merged pull requests:**
8
+
9
+ - Add support for configuring max\_threads [\#94](https://github.com/fastly/fastly_nsq/pull/94) ([leklund](https://github.com/leklund))
10
+
11
+ ## [v1.14.0](https://github.com/fastly/fastly_nsq/tree/v1.14.0) (2018-08-13)
5
12
  [Full Changelog](https://github.com/fastly/fastly_nsq/compare/v1.13.1...v1.14.0)
6
13
 
7
14
  **Merged pull requests:**
data/README.md CHANGED
@@ -159,6 +159,7 @@ FastlyNsq.configure do |config|
159
159
 
160
160
  config.max_attempts = 20
161
161
  config.max_req_timeout = (60 * 60 * 4 * 1_000) # 4 hours
162
+ config.max_processing_pool_threads = 10
162
163
 
163
164
  lc.listen 'posts', ->(m) { puts "posts: #{m.body}" }
164
165
  lc.listen 'blogs', ->(m) { puts "blogs: #{m.body}" }, priority: 3
@@ -30,6 +30,10 @@ module FastlyNsq
30
30
  # @return [Integer]
31
31
  attr_writer :max_req_timeout
32
32
 
33
+ # Maximum number of threads for FastlyNsq::PriorityThreadPool
34
+ # @return [Integer]
35
+ attr_writer :max_processing_pool_threads
36
+
33
37
  ##
34
38
  # Map of lifecycle events
35
39
  # @return [Hash]
@@ -111,6 +115,13 @@ module FastlyNsq
111
115
  @max_req_timeout ||= ENV.fetch('MAX_REQ_TIMEOUT', 60 * 60 * 1_000).to_i
112
116
  end
113
117
 
118
+ # Maximum number of threads for FastlyNsq::PriorityThreadPool
119
+ # Default setting is 5 and can be set via ENV['MAX_PROCESSING_POOL_THREADS']
120
+ # @return [Integer]
121
+ def max_processing_pool_threads
122
+ @max_processing_pool_threads ||= ENV.fetch('MAX_PROCESSING_POOL_THREADS', 5).to_i
123
+ end
124
+
114
125
  ##
115
126
  # Return an array of NSQ lookupd http addresses sourced from ENV['NSQLOOKUPD_HTTP_ADDRESS']
116
127
  # @return [Array<String>] list of nsqlookupd http addresses
@@ -32,7 +32,7 @@ class FastlyNsq::Feeder
32
32
  # swallow the exception.
33
33
  #
34
34
  # @param message [Nsq::Message]
35
- # @see http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/ThreadPoolExecutor.html#post-instance_method
35
+ # @see http://ruby-concurrency.github.io/concurrent-ruby/1.0.5/Concurrent/ThreadPoolExecutor.html#post-instance_method
36
36
  # @see Nsq::Connection#read_loop
37
37
  def push(message)
38
38
  FastlyNsq.manager.pool.post(priority) do
@@ -4,7 +4,6 @@
4
4
  # Interface for tracking listeners and managing the processing pool.
5
5
  class FastlyNsq::Manager
6
6
  DEADLINE = 30
7
- DEFAULT_POOL_SIZE = 5
8
7
 
9
8
  # @return [Boolean] Set true when all listeners are stopped
10
9
  attr_reader :done
@@ -19,12 +18,13 @@ class FastlyNsq::Manager
19
18
  # Create a FastlyNsq::Manager
20
19
  #
21
20
  # @param logger [Logger]
21
+ # @param max_threads [Integer] Maxiumum number of threads to be used by {FastlyNsq::PriorityThreadPool}
22
22
  # @param pool_options [Hash] Options forwarded to {FastlyNsq::PriorityThreadPool} constructor.
23
- def initialize(logger: FastlyNsq.logger, **pool_options)
23
+ def initialize(logger: FastlyNsq.logger, max_threads: FastlyNsq.max_processing_pool_threads, **pool_options)
24
24
  @done = false
25
25
  @logger = logger
26
26
  @pool = FastlyNsq::PriorityThreadPool.new(
27
- { fallback_policy: :caller_runs, max_threads: DEFAULT_POOL_SIZE }.merge(pool_options),
27
+ { fallback_policy: :caller_runs, max_threads: max_threads }.merge(pool_options),
28
28
  )
29
29
  end
30
30
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FastlyNsq
4
- VERSION = '1.14.0'
4
+ VERSION = '1.15.0'
5
5
  end
@@ -16,14 +16,14 @@ RSpec.describe FastlyNsq::Manager do
16
16
 
17
17
  describe '#initialize' do
18
18
  it 'allows max_threads to be specified' do
19
- max_threads = described_class::DEFAULT_POOL_SIZE * 2
19
+ max_threads = FastlyNsq.max_processing_pool_threads * 2
20
20
  manager = described_class.new(max_threads: max_threads)
21
21
 
22
22
  expect(manager.pool.max_threads).to eq(max_threads)
23
23
  end
24
24
 
25
- it 'defaults max_threads to DEFAULT_POOL_SIZE' do
26
- expect(subject.pool.max_threads).to eq(described_class::DEFAULT_POOL_SIZE)
25
+ it 'defaults max_threads to FastlyNsq.max_processing_pool_threads' do
26
+ expect(subject.pool.max_threads).to eq(FastlyNsq.max_processing_pool_threads)
27
27
  end
28
28
 
29
29
  it 'allows fallback_policy to be specified' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastly_nsq
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.14.0
4
+ version: 1.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tommy O'Neil
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2018-08-13 00:00:00.000000000 Z
16
+ date: 2018-10-05 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: awesome_print
@@ -270,7 +270,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
270
270
  version: '0'
271
271
  requirements: []
272
272
  rubyforge_project:
273
- rubygems_version: 2.7.3
273
+ rubygems_version: 2.7.6
274
274
  signing_key:
275
275
  specification_version: 4
276
276
  summary: Fastly NSQ Adapter