legion-transport 1.1.8 → 1.1.9

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: 63d52e031c058a898022ffe052a75fdee6bd83208f37e5413e5e1b361883d3bd
4
- data.tar.gz: 5be4a5d602de235d0ff73fab3f31c93f8ac664eee869f4e0bd6f36e3471dc49e
3
+ metadata.gz: fb72f3f576877e0433cf8017779136a89fa4ab4d24576c27b3f189a91f9e6813
4
+ data.tar.gz: f0a0e71cfc51a5db33d38992b4db2aa19c4850ec9bad1e76760b15cb8f3f2066
5
5
  SHA512:
6
- metadata.gz: f65bf581a683147c76a1b64d410b1603397f1f66365209b2bae6d89607e967cac7aaf641b9a88dfb9e434ef5ac4871da9737ff2bf0814a52331730c0ff3f1145
7
- data.tar.gz: ada8ca704e24de54ff6096b094b1352117495b7c1f9a3ce67bdbb107629dbd4b77282193b55b0f7f7617b6214f4943e44ad30d95b8d4feb1333bc23b2bba3d32
6
+ metadata.gz: fef7c669811ce5eff26f0a01556245511900f6eabc392d14c4eae5772e157e3aa108b4c3cbcf4d2dad6b028b8c51c9e8d314133fb9ab8b7c70450db63e229bfa
7
+ data.tar.gz: 58c648db5d56d71060b20f0e921805144e741ab2c5e063e70938b4f7965344e807d9a3b431805ced7b3e6fc912e2073eac56e13c64f34d52459bba47c9f0b805
@@ -1,7 +1,7 @@
1
1
  version: 2.1
2
2
  orbs:
3
- ruby: circleci/ruby@0.2.1
4
- sonarcloud: sonarsource/sonarcloud@1.0.1
3
+ ruby: circleci/ruby@1.1.2
4
+ sonarcloud: sonarsource/sonarcloud@1.0.2
5
5
 
6
6
  jobs:
7
7
  "rubocop":
@@ -9,55 +9,61 @@ jobs:
9
9
  - image: circleci/ruby:2.7-node
10
10
  steps:
11
11
  - checkout
12
- - ruby/load-cache
13
- - ruby/install-deps
14
- - run:
15
- name: Run Rubocop
16
- command: bundle exec rubocop
12
+ - run: gem install bundler
13
+ - run: bundle update
14
+ - run: bundle exec rubocop --format=json --out=rubocop-result.json
15
+ - store_test_results:
16
+ path: rubocop-result.json
17
17
  - sonarcloud/scan
18
- - ruby/save-cache
18
+ - run: bundle exec rubocop
19
19
  "ruby-two-five":
20
20
  docker:
21
21
  - image: circleci/ruby:2.5
22
22
  - image: rabbitmq:3.7
23
23
  steps:
24
24
  - checkout
25
- - ruby/load-cache
26
- - run:
27
- name: update bundler
28
- command: gem update bundler
29
- - ruby/install-deps
30
- - ruby/run-tests
25
+ - run: gem install bundler
26
+ - run: bundle update
27
+ - run: bundle exec rspec --format progress --format RspecJunitFormatter -o rspec-results.xml
28
+ - store_test_results:
29
+ path: rspec-results.xml
31
30
  - sonarcloud/scan
32
- - ruby/save-cache
33
31
  "ruby-two-six":
34
32
  docker:
35
33
  - image: circleci/ruby:2.6
36
34
  - image: rabbitmq:3.7
37
35
  steps:
38
36
  - checkout
39
- - ruby/load-cache
40
- - run:
41
- name: update bundler
42
- command: gem update bundler
43
- - ruby/install-deps
44
- - ruby/run-tests
37
+ - run: gem install bundler
38
+ - run: bundle update
39
+ - run: bundle exec rspec --format progress --format RspecJunitFormatter -o rspec-results.xml
40
+ - store_test_results:
41
+ path: rspec-results.xml
45
42
  - sonarcloud/scan
46
- - ruby/save-cache
47
43
  "ruby-two-seven":
48
44
  docker:
49
45
  - image: circleci/ruby:2.7
50
46
  - image: rabbitmq:3.7
51
47
  steps:
52
48
  - checkout
53
- - ruby/load-cache
54
- - run:
55
- name: update bundler
56
- command: gem update bundler
57
- - ruby/install-deps
58
- - ruby/run-tests
49
+ - run: gem install bundler
50
+ - run: bundle update
51
+ - run: bundle exec rspec --format progress --format RspecJunitFormatter -o rspec-results.xml
52
+ - store_test_results:
53
+ path: rspec-results.xml
54
+ - sonarcloud/scan
55
+ "ruby-three":
56
+ docker:
57
+ - image: circleci/ruby:3-node
58
+ - image: rabbitmq:3.7
59
+ steps:
60
+ - checkout
61
+ - run: gem install bundler
62
+ - run: bundle update
63
+ - run: bundle exec rspec --format progress --format RspecJunitFormatter -o rspec-results.xml
64
+ - store_test_results:
65
+ path: rspec-results.xml
59
66
  - sonarcloud/scan
60
- - ruby/save-cache
61
67
 
62
68
  workflows:
63
69
  version: 2
@@ -71,5 +77,8 @@ workflows:
71
77
  requires:
72
78
  - ruby-two-five
73
79
  - ruby-two-seven:
80
+ requires:
81
+ - ruby-two-five
82
+ - ruby-three:
74
83
  requires:
75
84
  - ruby-two-five
@@ -1,5 +1,19 @@
1
1
  # Legion::Transport ChangeLog
2
2
 
3
+ ## v1.1.9
4
+ * Adding new setting `transport.channel.default_worker_pool_size = 1` for whenever a new channel is created
5
+ * Adding new setting `transport.channel.session_worker_pool_size = 1` for default session channel
6
+ * Making the following settings setable with env variables
7
+ - transport.prefetch
8
+ - transport.logger_level
9
+ - transport.channel.default_worker_pool_size
10
+ - transport.channel.session_worker_pool_size
11
+ - transport.connection.user
12
+ - transport.connection.password
13
+ - transport.connection.host
14
+ - transport.connection.port
15
+ - transport.connection.vhost
16
+
3
17
  ## v1.1.8
4
18
  * Removing codecov gem
5
19
  * Changing bunny gem requirement to `>= 2.17.0`
@@ -32,6 +32,7 @@ Gem::Specification.new do |spec|
32
32
  spec.add_development_dependency 'rspec_junit_formatter'
33
33
  spec.add_development_dependency 'rubocop'
34
34
  spec.add_development_dependency 'simplecov'
35
+ spec.add_development_dependency 'simplecov_json_formatter'
35
36
 
36
37
  spec.add_dependency 'bunny', '>= 2.17.0'
37
38
  spec.add_dependency 'concurrent-ruby', '>= 1.1.7'
@@ -4,6 +4,10 @@ module Legion
4
4
  module Transport
5
5
  module Connection
6
6
  class << self
7
+ def settings
8
+ Legion::Settings[:transport]
9
+ end
10
+
7
11
  def new
8
12
  clone
9
13
  end
@@ -27,15 +31,15 @@ module Legion
27
31
  nil
28
32
  elsif Legion::Transport::TYPE == 'march_hare'
29
33
  @session ||= Concurrent::AtomicReference.new(
30
- MarchHare.connect(host: Legion::Settings[:transport][:connection][:host],
31
- vhost: Legion::Settings[:transport][:connection][:vhost],
32
- user: Legion::Settings[:transport][:connection][:user],
33
- password: Legion::Settings[:transport][:connection][:password],
34
- port: Legion::Settings[:transport][:connection][:port])
34
+ MarchHare.connect(host: settings[:connection][:host],
35
+ vhost: settings[:connection][:vhost],
36
+ user: settings[:connection][:user],
37
+ password: settings[:connection][:password],
38
+ port: settings[:connection][:port])
35
39
  )
36
40
  @channel_thread = Concurrent::ThreadLocalVar.new(nil)
37
41
  session.start
38
- session.create_channel.basic_qos(1)
42
+ session.create_channel.basic_qos(settings[:prefetch])
39
43
  Legion::Settings[:transport][:connected] = true
40
44
  else
41
45
  @session ||= Concurrent::AtomicReference.new(
@@ -48,7 +52,8 @@ module Legion
48
52
  )
49
53
  @channel_thread = Concurrent::ThreadLocalVar.new(nil)
50
54
  session.start
51
- session.create_channel.basic_qos(20, true)
55
+ session.create_channel(nil, settings[:channel][:session_worker_pool_size])
56
+ .basic_qos(settings[:prefetch], true)
52
57
  Legion::Settings[:transport][:connected] = true
53
58
  end
54
59
 
@@ -70,11 +75,11 @@ module Legion
70
75
  def channel # rubocop:disable Metrics/AbcSize
71
76
  return @channel_thread.value if !@channel_thread.value.nil? && @channel_thread.value.open?
72
77
 
73
- @channel_thread.value = session.create_channel
78
+ @channel_thread.value = session.create_channel(nil, settings[:channel][:default_worker_pool_size], false, 10)
74
79
  if Legion::Transport::TYPE == 'march_hare'
75
- @channel_thread.value.basic_qos(Legion::Settings[:transport][:prefetch])
80
+ @channel_thread.value.basic_qos(settings[:prefetch])
76
81
  else
77
- @channel_thread.value.prefetch(Legion::Settings[:transport][:prefetch])
82
+ @channel_thread.value.prefetch(settings[:prefetch])
78
83
  end
79
84
  @channel_thread.value
80
85
  end
@@ -52,6 +52,10 @@ module Legion
52
52
  def default_type
53
53
  'topic'
54
54
  end
55
+
56
+ def channel
57
+ Legion::Transport::Connection.channel
58
+ end
55
59
  end
56
60
  end
57
61
  end
@@ -3,7 +3,6 @@ require 'legion/settings'
3
3
  module Legion
4
4
  module Transport
5
5
  module Settings
6
- # Legion::Settings.merge_settings('transport', default) if Legion::Settings.method_defined? :merge_settings
7
6
  def self.connection
8
7
  {
9
8
  read_timeout: 1,
@@ -13,13 +12,13 @@ module Legion
13
12
  network_recovery_interval: 1,
14
13
  connection_timeout: 1,
15
14
  frame_max: 65_536,
16
- user: 'guest',
17
- password: 'guest',
18
- host: '127.0.0.1',
19
- port: '5672',
20
- vhost: '/',
21
- recovery_attempts: 0,
22
- logger_level: 'info',
15
+ user: ENV['transport.connection.user'] || 'guest',
16
+ password: ENV['transport.connection.password'] || 'guest',
17
+ host: ENV['transport.connection.host'] || '127.0.0.1',
18
+ port: ENV['transport.connection.port'] || '5672',
19
+ vhost: ENV['transport.connection.vhost'] || '/',
20
+ recovery_attempts: 100,
21
+ logger_level: ENV['transport.log_level'] || 'info',
23
22
  connected: false
24
23
  }.merge(grab_vault_creds)
25
24
  end
@@ -34,33 +33,49 @@ module Legion
34
33
  {}
35
34
  end
36
35
 
36
+ def self.channel
37
+ {
38
+ default_worker_pool_size: ENV['transport.channel.default_worker_pool_size'] || 1,
39
+ session_worker_pool_size: ENV['transport.channel.session_worker_pool_size'] || 8
40
+ }
41
+ end
42
+
43
+ def self.queues
44
+ {
45
+ manual_ack: true,
46
+ durable: true,
47
+ exclusive: false,
48
+ block: false,
49
+ auto_delete: false,
50
+ arguments: { 'x-max-priority': 255, 'x-overflow': 'reject-publish' }
51
+ }
52
+ end
53
+
54
+ def self.exchanges
55
+ {
56
+ type: 'topic',
57
+ arguments: {},
58
+ auto_delete: false,
59
+ durable: true,
60
+ internal: false
61
+ }
62
+ end
63
+
37
64
  def self.default
38
65
  {
39
66
  type: 'rabbitmq',
40
67
  connected: false,
41
- logger_level: 'info',
68
+ logger_level: ENV['transport.logger_level'] || 'info',
42
69
  messages: {
43
70
  encrypt: false,
44
71
  ttl: nil,
45
72
  priority: 0
46
73
  },
47
- exchanges: {
48
- type: 'topic',
49
- arguments: {},
50
- auto_delete: false,
51
- durable: true,
52
- internal: false
53
- },
54
- queues: {
55
- manual_ack: true,
56
- durable: true,
57
- exclusive: false,
58
- block: false,
59
- auto_delete: false,
60
- arguments: { 'x-max-priority': 255, 'x-overflow': 'reject-publish' }
61
- },
62
- prefetch: 2,
63
- connection: connection
74
+ prefetch: ENV['transport.prefetch'].to_i || 2,
75
+ exchanges: exchanges,
76
+ queues: queues,
77
+ connection: connection,
78
+ channel: channel
64
79
  }
65
80
  end
66
81
  end
@@ -1,5 +1,5 @@
1
1
  module Legion
2
2
  module Transport
3
- VERSION = '1.1.8'.freeze
3
+ VERSION = '1.1.9'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: legion-transport
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.8
4
+ version: 1.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-14 00:00:00.000000000 Z
11
+ date: 2021-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: legion-logging
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: simplecov_json_formatter
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: bunny
113
127
  requirement: !ruby/object:Gem::Requirement