legion-transport-java 1.1.3 → 1.1.4

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: fe045f5f966e8cde47bd41f5972f1083f7395d9887d7a7a7f0fd561ec0a76c29
4
- data.tar.gz: fce6b203e18c600aa4e7529a45673cb813e800b084f26457499c5066f409552a
3
+ metadata.gz: 9fdf527820df05c7bef42a3b791b8a6d41bff76e5ba0f7a4cae339bf7218ff42
4
+ data.tar.gz: f960161a203c93bb1d4a9f08f0f74417823da111e229f1ebc6588fc1e8958b08
5
5
  SHA512:
6
- metadata.gz: a86241556c6639829d0f82e1a5d91af89988a5d5f8ed827da574480fd25dc82ff8005ca3896a15ea05d6e2193f89f61164e7e12f8884020bc19b345483a2da3b
7
- data.tar.gz: d2994c7a2bf516769432912c2265d51a066854e4bb6d9539328f9ca3eb50887620b060f7092fc49d7c56e687d9f0c9ddbd4fde474113fae4ad0c5c587f4ce889
6
+ metadata.gz: 8d68e3a437304d70798e16c47a31efee681e9c1757d5da663edd29e29520d9a28ded595aef4da5a49bd2fe8345b6b7f2008563aad57ef99f0cd82916c88c27e9
7
+ data.tar.gz: 44aaba9fd6138fa50ba86acf0cd8ef5b5ac9bd50ee078084e6061095e35f45d1e8c3801a4ac663e97a77e6c9a24d37e286a06f198a5aee6ea98e3ac509270c2a
@@ -3,10 +3,11 @@ require_relative 'transport/settings'
3
3
 
4
4
  module Legion
5
5
  module Transport
6
- if RUBY_ENGINE == 'jruby' && defined?(::Marchhare)
7
- TYPE = 'marchhare'.freeze
8
- CONNECTOR = ::Marchhare
9
- else
6
+ begin
7
+ require 'march_hare'
8
+ TYPE = 'march_hare'.freeze
9
+ CONNECTOR = ::MarchHare
10
+ rescue LoadError
10
11
  require 'bunny'
11
12
  TYPE = 'bunny'.freeze
12
13
  CONNECTOR = ::Bunny
@@ -16,6 +17,5 @@ module Legion
16
17
  require_relative 'transport/common'
17
18
  require_relative 'transport/queue'
18
19
  require_relative 'transport/exchange'
19
- require_relative 'transport/consumer'
20
20
  require_relative 'transport/message'
21
21
  end
@@ -8,11 +8,24 @@ module Legion
8
8
  Legion::Transport::CONNECTOR
9
9
  end
10
10
 
11
- def setup # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
11
+ def setup # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity,Metrics/MethodLength
12
+ Legion::Logging.info("Using transport connector: #{Legion::Transport::CONNECTOR}")
13
+
12
14
  if @session.respond_to?(:value) && session.respond_to?(:closed?) && session.closed?
13
- @channel_thread = Concurrent::ThreadLocalVar.new
15
+ @channel_thread = Concurrent::ThreadLocalVar.new(nil)
14
16
  elsif @session.respond_to?(:value) && session.respond_to?(:closed?) && session.open?
15
- return nil
17
+ nil
18
+ elsif Legion::Transport::TYPE == 'march_hare'
19
+ @session ||= Concurrent::Atom.new(
20
+ MarchHare.connect(host: Legion::Settings[:transport][:connection][:host],
21
+ vhost: Legion::Settings[:transport][:connection][:vhost],
22
+ user: Legion::Settings[:transport][:connection][:user],
23
+ password: Legion::Settings[:transport][:connection][:password],
24
+ port: Legion::Settings[:transport][:connection][:port])
25
+ )
26
+ @channel_thread = Concurrent::ThreadLocalVar.new(nil)
27
+ session.start
28
+ session.create_channel.basic_qos(1)
16
29
  else
17
30
  @session ||= Concurrent::Atom.new(
18
31
  connector.new(
@@ -21,18 +34,35 @@ module Legion
21
34
  log_level: :info
22
35
  )
23
36
  )
24
- @channel_thread = Concurrent::ThreadLocalVar.new
37
+ @channel_thread = Concurrent::ThreadLocalVar.new(nil)
38
+ session.start
39
+ session.create_channel.basic_qos(20, true)
25
40
  end
26
41
 
27
- session.start
28
- session.create_channel.basic_qos(1, true)
42
+ if session.respond_to? :on_blocked
43
+ session.on_blocked { Legion::Logging.warn('Legion::Transport is being blocked by RabbitMQ!') }
44
+ end
45
+
46
+ if session.respond_to? :on_unblocked
47
+ session.on_unblocked { Legion::Logging.info('Legion::Transport is no longer being blocked by RabbitMQ') }
48
+ end
49
+
50
+ if session.respond_to? :after_recovery_completed
51
+ session.after_recovery_completed { Legion::Logging.info('Legion::Transport has completed recovery') }
52
+ end
53
+
54
+ true
29
55
  end
30
56
 
31
- def channel
57
+ def channel # rubocop:disable Metrics/AbcSize
32
58
  return @channel_thread.value if !@channel_thread.value.nil? && @channel_thread.value.open?
33
59
 
34
60
  @channel_thread.value = session.create_channel
35
- @channel_thread.value.prefetch(Legion::Settings[:transport][:prefetch])
61
+ if Legion::Transport::TYPE == 'march_hare'
62
+ @channel_thread.value.basic_qos(Legion::Settings[:transport][:prefetch])
63
+ else
64
+ @channel_thread.value.prefetch(Legion::Settings[:transport][:prefetch])
65
+ end
36
66
  @channel_thread.value
37
67
  end
38
68
 
@@ -6,8 +6,14 @@ module Legion
6
6
  def initialize(exchange = exchange_name, options = {})
7
7
  @options = options
8
8
  @type = options[:type] || default_type
9
- super(channel, @type, exchange, options_builder(default_options, exchange_options, @options))
10
- rescue ::Bunny::PreconditionFailed, ::Bunny::ChannelAlreadyClosed
9
+ if Legion::Transport::TYPE == 'march_hare'
10
+ super_options = options_builder(default_options, exchange_options, @options)
11
+ super_options[:type] = @type
12
+ super(channel, exchange, **super_options)
13
+ else
14
+ super(channel, @type, exchange, options_builder(default_options, exchange_options, @options))
15
+ end
16
+ rescue Legion::Transport::CONNECTOR::PreconditionFailed, Legion::Transport::CONNECTOR::ChannelAlreadyClosed
11
17
  raise unless @retries.nil?
12
18
 
13
19
  @retries = 1
@@ -39,7 +45,7 @@ module Legion
39
45
  def delete(options = {})
40
46
  super(options)
41
47
  true
42
- rescue ::Bunny::PreconditionFailed
48
+ rescue Legion::Transport::CONNECTOR::PreconditionFailed
43
49
  false
44
50
  end
45
51
 
@@ -11,7 +11,9 @@ module Legion
11
11
  def publish(options = @options) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
12
12
  raise unless @valid
13
13
 
14
- exchange_dest = exchange.respond_to?(:new) ? exchange.new : exchange
14
+ $exchanges = {} if $exchanges.nil?
15
+ $exchanges[exchange.to_s] = exchange.new unless $exchanges.key?(exchange.to_s)
16
+ exchange_dest = $exchanges[exchange.to_s]
15
17
  exchange_dest.publish(encode_message,
16
18
  routing_key: routing_key || '',
17
19
  content_type: options[:content_type] || content_type,
@@ -26,6 +28,10 @@ module Legion
26
28
  @options
27
29
  end
28
30
 
31
+ def routing_key
32
+ nil
33
+ end
34
+
29
35
  def encode_message
30
36
  message_payload = message
31
37
  message_payload = Legion::JSON.dump(message_payload) unless message_payload.is_a? String
@@ -16,17 +16,6 @@ module Legion
16
16
  }
17
17
  end
18
18
 
19
- def routing_key # rubocop:disable Metrics/AbcSize
20
- if @options[:conditions].is_a?(String) && @options[:conditions].length > 2
21
- 'task.subtask.conditioner'
22
- elsif @options[:transformation].is_a?(String) && @options[:transformation].length > 2
23
- 'task.subtask.transform'
24
- elsif @options[:function_id].is_a? Integer
25
- function = Legion::Data::Model::Function[@options[:function_id]]
26
- "#{function.runner.extension.values[:exchange]}.#{function.runner.values[:queue]}.#{function.values[:name]}"
27
- end
28
- end
29
-
30
19
  def validate
31
20
  raise TypeError unless @options[:function].is_a? String
32
21
 
@@ -7,7 +7,7 @@ module Legion
7
7
  retries ||= 0
8
8
  @options = options
9
9
  super(channel, queue, options_builder(default_options, queue_options, options))
10
- rescue ::Bunny::PreconditionFailed
10
+ rescue Legion::Transport::CONNECTOR::PreconditionFailed
11
11
  retries.zero? ? retries = 1 : raise
12
12
  recreate_queue(channel, queue)
13
13
  retry
@@ -51,7 +51,7 @@ module Legion
51
51
  def delete(options = { if_unused: true, if_empty: true })
52
52
  super(options)
53
53
  true
54
- rescue ::Bunny::PreconditionFailed
54
+ rescue Legion::Transport::CONNECTOR::PreconditionFailed
55
55
  false
56
56
  end
57
57
 
@@ -16,7 +16,7 @@ module Legion
16
16
  password: 'guest',
17
17
  host: '127.0.0.1',
18
18
  port: '5672',
19
- vhost: '/',
19
+ vhost: 'legion',
20
20
  recovery_attempts: 0,
21
21
  logger_level: 'info'
22
22
  }.merge(grab_vault_creds)
@@ -1,5 +1,5 @@
1
1
  module Legion
2
2
  module Transport
3
- VERSION = '1.1.3'.freeze
3
+ VERSION = '1.1.4'.freeze
4
4
  end
5
5
  end
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "transport": {
3
- "vhost": "/"
3
+ "vhost": "legion"
4
4
  }
5
5
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: legion-transport-java
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 1.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-25 00:00:00.000000000 Z
11
+ date: 2020-10-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement