rservicebus2 0.2.8 → 0.2.13

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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rservicebus2.rb +6 -5
  3. data/lib/rservicebus2/agent.rb +7 -4
  4. data/lib/rservicebus2/appresource.rb +1 -1
  5. data/lib/rservicebus2/appresource/awss3.rb +3 -3
  6. data/lib/rservicebus2/appresource/awssqs.rb +2 -0
  7. data/lib/rservicebus2/appresource/dir.rb +3 -0
  8. data/lib/rservicebus2/appresource/file.rb +2 -0
  9. data/lib/rservicebus2/appresource/fluiddb.rb +3 -0
  10. data/lib/rservicebus2/appresource/fluiddb2.rb +3 -1
  11. data/lib/rservicebus2/appresource_configure.rb +8 -4
  12. data/lib/rservicebus2/audit.rb +4 -2
  13. data/lib/rservicebus2/config.rb +39 -27
  14. data/lib/rservicebus2/endpointmapping.rb +2 -4
  15. data/lib/rservicebus2/errormessage.rb +1 -1
  16. data/lib/rservicebus2/handler_manager.rb +1 -1
  17. data/lib/rservicebus2/helper_functions.rb +19 -14
  18. data/lib/rservicebus2/host.rb +62 -123
  19. data/lib/rservicebus2/message.rb +11 -19
  20. data/lib/rservicebus2/message/statisticoutput.rb +2 -0
  21. data/lib/rservicebus2/message/subscription.rb +2 -0
  22. data/lib/rservicebus2/message/verboseoutput.rb +2 -0
  23. data/lib/rservicebus2/monitor.rb +7 -7
  24. data/lib/rservicebus2/monitor/awss3.rb +3 -1
  25. data/lib/rservicebus2/monitor/awssqs.rb +9 -7
  26. data/lib/rservicebus2/monitor/dir.rb +25 -23
  27. data/lib/rservicebus2/monitor/dirnotifier.rb +4 -1
  28. data/lib/rservicebus2/monitor/message.rb +2 -0
  29. data/lib/rservicebus2/monitor/xmldir.rb +2 -0
  30. data/lib/rservicebus2/monitor_configure.rb +46 -36
  31. data/lib/rservicebus2/mq.rb +27 -30
  32. data/lib/rservicebus2/mq/beanstalk.rb +5 -1
  33. data/lib/rservicebus2/saga/data.rb +1 -1
  34. data/lib/rservicebus2/saga/manager.rb +1 -1
  35. data/lib/rservicebus2/saga_loader.rb +27 -24
  36. data/lib/rservicebus2/saga_storage.rb +5 -4
  37. data/lib/rservicebus2/sendat_manager.rb +5 -3
  38. data/lib/rservicebus2/sendat_storage.rb +5 -3
  39. data/lib/rservicebus2/sendat_storage/file.rb +6 -2
  40. data/lib/rservicebus2/sendat_storage/inmemory.rb +2 -0
  41. data/lib/rservicebus2/state_manager.rb +5 -4
  42. data/lib/rservicebus2/state_storage.rb +7 -6
  43. data/lib/rservicebus2/statistic_manager.rb +7 -3
  44. data/lib/rservicebus2/subscription_manager.rb +7 -5
  45. data/lib/rservicebus2/subscription_storage.rb +6 -5
  46. data/lib/rservicebus2/subscription_storage/file.rb +5 -18
  47. data/lib/rservicebus2/subscription_storage_configure.rb +2 -0
  48. data/lib/rservicebus2/transporter.rb +63 -52
  49. metadata +2 -3
  50. data/lib/rservicebus2/stats.rb +0 -68
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5f94672750deba44e6495d728b6c45bbf0aba95efe35d18b6877359e27173da4
4
- data.tar.gz: 27e94561da7ab338ee3ff5ac99f850f872900f2559bb56ce3dffd604c452173a
3
+ metadata.gz: 51c1a3dd6e3b22da8216ba061cb1572a5dd29475353c0b10ea470bdda7d7e3f7
4
+ data.tar.gz: 3952dfc273048ca7cecd3dca0179891d8d9bcc341e137b3212ce611c10523681
5
5
  SHA512:
6
- metadata.gz: ac819c545740eb82ecf1ae2b95286f837ae1189ba3eded36ddcc98680ce4b7dcc84b975d9c75ab48e62f99cef32a83d98fdf2ad195bab0012f2804392abb3289
7
- data.tar.gz: c10528a4a06fc27f9e2c5541dd4d500a1ae2120cc0f89a4a66c165a09c6fb5eae014c04ab74735c29069c6b6f8ebfaf089c7f2f63d80cdc02fb7d4acf3f7cc7b
6
+ metadata.gz: 0ed0ba711726a1641c1c3fab6811843f826633caca5c3061d5d223731313cc0138f182842768bece201041001a081ba899261bbbde5a0415fdeadd4252127ef5
7
+ data.tar.gz: 3976c2ec0eb733817f5b364bd0ee788a9ce1d13c2ff48c08694c5df916441d38ba6bbbfa6f0e8822a1143f51a00b53fd037ef9194a5e1fde969c8f75b0672aa4
data/lib/rservicebus2.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Add the currently running directory to the start of the load path
2
4
  # $:.unshift File.dirname(__FILE__) + '/../../lib'
3
5
 
@@ -19,7 +21,6 @@ require 'rservicebus2/mq'
19
21
  require 'rservicebus2/host'
20
22
  require 'rservicebus2/config'
21
23
  require 'rservicebus2/endpointmapping'
22
- require 'rservicebus2/stats'
23
24
  require 'rservicebus2/statistic_manager'
24
25
  require 'rservicebus2/audit'
25
26
 
@@ -45,10 +46,10 @@ require 'rservicebus2/monitor_configure'
45
46
 
46
47
  require 'rservicebus2/agent'
47
48
 
48
- require 'rservicebus2/saga_loader.rb'
49
- require 'rservicebus2/saga/manager.rb'
50
- require 'rservicebus2/saga/data.rb'
51
- require 'rservicebus2/saga/base.rb'
49
+ require 'rservicebus2/saga_loader'
50
+ require 'rservicebus2/saga/manager'
51
+ require 'rservicebus2/saga/data'
52
+ require 'rservicebus2/saga/base'
52
53
 
53
54
  require 'rservicebus2/saga_storage'
54
55
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RServiceBus2
2
4
  class QueueNotFoundForMsg < StandardError
3
5
  end
@@ -22,17 +24,17 @@ module RServiceBus2
22
24
  # @param [Object] messageObj The msg to be sent
23
25
  # @param [String] queueName the name of the queue to be send the msg to
24
26
  # @param [String] returnAddress the name of a queue to send replies to
25
- # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
27
+ # rubocop:disable Metrics/MethodLength
26
28
  def send_msg(message_obj, queue_name, return_address = nil)
27
- fail QueueNotFoundForMsg, message_obj.class.name if queue_name.nil?
29
+ raise QueueNotFoundForMsg, message_obj.class.name if queue_name.nil?
28
30
 
29
31
  msg = RServiceBus2::Message.new(message_obj, return_address)
30
32
  if queue_name.index('@').nil?
31
33
  q = queue_name
32
34
  else
33
35
  parts = queueName.split('@')
34
- msg.set_remote_queue_name(parts[0])
35
- msg.set_remote_host_name(parts[1])
36
+ msg.remote_queue_name = parts[0]
37
+ msg.remote_host_name = parts[1]
36
38
  q = 'transport-out'
37
39
  end
38
40
 
@@ -40,6 +42,7 @@ module RServiceBus2
40
42
 
41
43
  @mq.send(q, serialized_object)
42
44
  end
45
+ # rubocop:enable Metrics/MethodLength
43
46
 
44
47
  # Gives an agent the means to receive a reply
45
48
  #
@@ -18,7 +18,7 @@ module RServiceBus2
18
18
  RServiceBus2.rlog "#{self.class.name}. Connected to, #{@uri}"
19
19
  end
20
20
 
21
- def get_resource
21
+ def resource
22
22
  @connection
23
23
  end
24
24
 
@@ -1,16 +1,16 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'aws-sdk-s3'
2
4
 
3
5
  module RServiceBus2
4
6
  # AppResourceAWSDynamoDb
5
7
  class AppResourceAWSS3 < AppResource
6
- # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
7
8
  def connect(uri)
8
9
  region = uri.host
9
10
 
10
11
  Aws::S3::Client.new(region: region)
11
12
  end
12
13
 
13
- def finished
14
- end
14
+ def finished; end
15
15
  end
16
16
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'aws-sdk-sqs'
2
4
  require 'aws-sdk-sts'
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RServiceBus2
2
4
  # AppResourceDir
3
5
  class AppResourceDir < AppResource
@@ -26,5 +28,6 @@ module RServiceBus2
26
28
 
27
29
  input_dir
28
30
  end
31
+ # rubocop:enable Metrics/AbcSize,Metrics/MethodLength
29
32
  end
30
33
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RServiceBus2
2
4
  # App Resource File
3
5
  class AppResourceFile < AppResource
@@ -1,4 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'FluidDb/Db'
4
+
2
5
  module RServiceBus2
3
6
  # Implementation of an AppResource - FluidDb
4
7
  class AppResourceFluidDb < AppResource
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'fluiddb2'
2
4
 
3
5
  module RServiceBus2
@@ -16,8 +18,8 @@ module RServiceBus2
16
18
  def commit
17
19
  @connection.commit
18
20
  end
19
-
20
21
  # Transaction Semantics
22
+
21
23
  def rollback
22
24
  @connection.rollback
23
25
  end
@@ -1,12 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'uri'
2
4
 
3
5
  module RServiceBus2
4
6
  # Configure AppResources for an rservicebus host
5
7
  class ConfigureAppResource
6
- # rubocop:disable Metrics/AbcSize,Metrics/MethodLength,CyclomaticComplexity
8
+ # rubocop:disable Metrics/AbcSize,Metrics/MethodLength,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
7
9
  def get_resources(env, host, state_manager, saga_storage)
8
- # rm = resource_manager
9
10
  rm = ResourceManager.new(state_manager, saga_storage)
11
+ # rubocop:disable Metrics/BlockLength
10
12
  env.each do |k, v|
11
13
  if v.is_a?(String) && k.start_with?('RSBFDB2_')
12
14
  uri = URI.parse(v)
@@ -15,8 +17,8 @@ module RServiceBus2
15
17
  k = k.sub('RSBFDB2_', '')
16
18
  rm.add k, AppResourceFluidDb2.new(host, uri)
17
19
  elsif v.is_a?(String) &&
18
- (k.start_with?('RSBFDB_') || v.index('fluiddb') == 0)
19
- v = v['fluiddb'.length..-1] if v.index('fluiddb') == 0
20
+ (k.start_with?('RSBFDB_') || v.start_with?('fluiddb'))
21
+ v = v['fluiddb'.length..-1] if v.start_with?('fluiddb')
20
22
  uri = URI.parse(v)
21
23
  require 'rservicebus2/appresource/fluiddb'
22
24
 
@@ -46,8 +48,10 @@ module RServiceBus2
46
48
  end
47
49
  end
48
50
  end
51
+ # rubocop:enable Metrics/BlockLength
49
52
 
50
53
  rm
51
54
  end
55
+ # rubocop:enable Metrics/AbcSize,Metrics/MethodLength,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
52
56
  end
53
57
  end
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RServiceBus2
2
4
  # Audit Class
3
5
  class Audit
4
- def initialize(mq)
5
- @mq = mq
6
+ def initialize(message_queue)
7
+ @mq = message_queue
6
8
  audit_queue_name = RServiceBus2.get_value('AUDIT_QUEUE_NAME')
7
9
  if audit_queue_name.nil?
8
10
  @sent_messages_to = RServiceBus2.get_value('sent_messages_to')
@@ -2,6 +2,7 @@
2
2
 
3
3
  module RServiceBus2
4
4
  # Marshals configuration information for an rservicebus host
5
+ # rubocop:disable Metrics/ClassLength
5
6
  class Config
6
7
  attr_reader :app_name, :message_endpoint_mappings, :handler_path_list,
7
8
  :saga_path_list, :error_queue_name, :max_retries,
@@ -49,6 +50,7 @@ module RServiceBus2
49
50
  self
50
51
  end
51
52
 
53
+ # rubocop:disable Metrics/MethodLength
52
54
  def load_host_section
53
55
  @app_name = get_value('APPNAME', 'RServiceBus2')
54
56
  @error_queue_name = get_value('ERROR_QUEUE_NAME', 'error')
@@ -68,6 +70,7 @@ module RServiceBus2
68
70
 
69
71
  self
70
72
  end
73
+ # rubocop:enable Metrics/MethodLength
71
74
 
72
75
  def ensure_contract_file_exists(path)
73
76
  unless File.exist?(path) || File.exist?("#{path}.rb")
@@ -75,11 +78,11 @@ module RServiceBus2
75
78
  puts "*** path, #{path}, provided does not exist as a file"
76
79
  abort
77
80
  end
78
- unless File.extname(path) == '' || File.extname(path) == '.rb'
79
- puts 'Error while processing contracts'
80
- puts "*** path, #{path}, should point to a ruby file, with extention .rb"
81
- abort
82
- end
81
+ return if File.extname(path) == '.rb'
82
+
83
+ puts 'Error while processing contracts'
84
+ puts "*** path, #{path}, should point to a ruby file, with extention .rb"
85
+ abort
83
86
  end
84
87
 
85
88
  # Marshals paths for contracts
@@ -102,6 +105,16 @@ module RServiceBus2
102
105
  # Marshals paths for lib
103
106
  # Note. .rb extension is optional
104
107
  # Expected format: /one/two/contracts
108
+ def load_lib(path)
109
+ log "Loading libs from, #{path}"
110
+ return path if File.exist?(path)
111
+
112
+ puts 'Error while processing libs'
113
+ puts "*** path, #{path}, should point to a ruby file, with extention .rb, or"
114
+ puts "*** path, #{path}, should point to a directory than conatins ruby files, that have extention .rb"
115
+ abort
116
+ end
117
+
105
118
  def load_libs
106
119
  @lib_list = []
107
120
 
@@ -109,18 +122,7 @@ module RServiceBus2
109
122
  paths = './lib' if paths.nil? && File.exist?('./lib')
110
123
  return self if paths.nil?
111
124
 
112
- paths.split(';').each do |path|
113
- log "Loading libs from, #{path}"
114
- unless File.exist?(path)
115
- puts 'Error while processing libs'
116
- puts "*** path, #{path}, should point to a ruby file, with extention
117
- .rb, or"
118
- puts "*** path, #{path}, should point to a directory than conatins
119
- ruby files, that have extention .rb"
120
- abort
121
- end
122
- @lib_list << path
123
- end
125
+ paths.split(';').each { |path| @lib_list << load_lib(path) }
124
126
  self
125
127
  end
126
128
 
@@ -132,33 +134,43 @@ module RServiceBus2
132
134
  # Marshals paths for working_dirs
133
135
  # Note. trailing slashs will be stripped
134
136
  # Expected format: <path 1>;<path 2>
137
+ def load_working_dir_path(path)
138
+ path = path.strip.chomp('/')
139
+ unless Dir.exist?(path.to_s)
140
+ puts 'Error while processing working directory list'
141
+ puts "*** path, #{path}, does not exist"
142
+ abort
143
+ end
144
+ @handler_path_list << "#{path}/messagehandler" if Dir.exist?("#{path}/messagehandler")
145
+ @saga_path_list << "#{path}/saga" if Dir.exist?("#{path}/saga")
146
+ @contract_list << "#{path}/contract.rb" if File.exist?("#{path}/contract.rb")
147
+ @lib_list << "#{path}/lib" if File.exist?("#{path}/lib")
148
+ end
149
+
135
150
  def load_working_dir_list
136
151
  path_list = get_value('WORKING_DIR', './')
137
152
  return self if path_list.nil?
138
153
 
139
154
  path_list.split(';').each do |path|
140
- path = path.strip.chomp('/')
141
- unless Dir.exist?(path.to_s)
142
- puts 'Error while processing working directory list'
143
- puts "*** path, #{path}, does not exist"
144
- abort
145
- end
146
- @handler_path_list << "#{path}/messagehandler" if Dir.exist?("#{path}/messagehandler")
147
- @saga_path_list << "#{path}/saga" if Dir.exist?("#{path}/saga")
148
- @contract_list << "#{path}/contract.rb" if File.exist?("#{path}/contract.rb")
149
- @lib_list << "#{path}/lib" if File.exist?("#{path}/lib")
155
+ load_working_dir_path(path)
150
156
  end
151
157
  self
152
158
  end
153
159
  end
160
+ # rubocop:enable Metrics/ClassLength
154
161
 
155
162
  # Class
163
+ # rubocop:disable Lint/MissingSuper
156
164
  class ConfigFromEnv < Config
165
+ def initialize; end
157
166
  end
158
167
 
159
168
  # Class
160
169
  class ConfigFromSetter < Config
161
170
  attr_writer :app_name, :message_endpoint_mappings, :handler_path_list, :error_queue_name, \
162
171
  :max_retries, :forward_received_messages_to, :beanstalk_host
172
+
173
+ def initialize; end
163
174
  end
175
+ # rubocop:enable Lint/MissingSuper
164
176
  end
@@ -12,8 +12,7 @@ module RServiceBus2
12
12
  RServiceBus2.log(string)
13
13
  end
14
14
 
15
- # rubocop:disable Metrics/AbcSize
16
- # rubocop:disable Metrics/MethodLength
15
+ # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
17
16
  def configure_mapping(mapping)
18
17
  match = mapping.match(/(.+):(.+)/)
19
18
  if match.nil?
@@ -36,8 +35,7 @@ module RServiceBus2
36
35
  end
37
36
  @queue_name_list << match[2]
38
37
  end
39
- # rubocop:enable Metrics/AbcSize
40
- # rubocop:enable Metrics/MethodLength
38
+ # rubocop:enable Metrics/AbcSize, Metrics/MethodLength
41
39
 
42
40
  # rubocop:disable Metrics/MethodLength
43
41
  def configure(local_queue_name = nil)
@@ -6,7 +6,7 @@ module RServiceBus2
6
6
  attr_reader :occurredat, :source_queue, :error_msg
7
7
 
8
8
  def initialize(source_queue, error_msg)
9
- @occurredat = DateTime.now
9
+ @occurredat = Time.now
10
10
 
11
11
  @source_queue = source_queue
12
12
  @error_msg = error_msg
@@ -102,7 +102,7 @@ module RServiceBus2
102
102
  next if @resource_list_by_handler_name[handler.class.name].nil?
103
103
 
104
104
  @resource_list_by_handler_name[handler.class.name].each do |k|
105
- handler.instance_variable_set("@#{k}", @resource_manager.get(k).get_resource)
105
+ handler.instance_variable_set("@#{k}", @resource_manager.get(k).resource)
106
106
  RServiceBus2.rlog "App resource attribute, #{k}, set for: #{handler.class.name}"
107
107
  end
108
108
  end
@@ -1,3 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Helper functions
1
4
  module RServiceBus2
2
5
  def self.convert_dto_to_hash(obj)
3
6
  hash = {}
@@ -15,10 +18,10 @@ module RServiceBus2
15
18
  return if check_environment_variable('TESTING')
16
19
 
17
20
  type = ver ? 'VERB' : 'INFO'
18
- if check_environment_variable('VERBOSE') || !ver
19
- timestamp = Time.new.strftime('%Y-%m-%d %H:%M:%S')
20
- puts "[#{type}] #{timestamp} :: #{string}"
21
- end
21
+ return unless check_environment_variable('VERBOSE') || !ver
22
+
23
+ timestamp = Time.new.strftime('%Y-%m-%d %H:%M:%S')
24
+ puts "[#{type}] #{timestamp} :: #{string}"
22
25
  end
23
26
 
24
27
  def self.rlog(string)
@@ -35,11 +38,12 @@ module RServiceBus2
35
38
  end
36
39
 
37
40
  def self.get_value(name, default = nil)
38
- value = (ENV[name].nil? || ENV[name] == '') ? default : ENV[name]
41
+ value = ENV[name].nil? || ENV[name] == '' ? default : ENV[name]
39
42
  log "Env value: #{name}: #{value}"
40
43
  value
41
44
  end
42
45
 
46
+ # rubocop:disable Metrics/MethodLength
43
47
  def self.send_msg(msg, response_queue = 'agent')
44
48
  require 'rservicebus2/endpointmapping'
45
49
  endpoint_mapping = EndpointMapping.new
@@ -50,15 +54,13 @@ module RServiceBus2
50
54
  agent = RServiceBus2::Agent.new
51
55
  Audit.new(agent).audit_to_queue(msg)
52
56
  agent.send_msg(msg, queue_name, response_queue)
53
-
54
57
  rescue QueueNotFoundForMsg => e
55
- msg = "\n"
56
- msg = "#{msg}*** Queue not found for, #{e.message}\n"
57
- msg = "#{msg}*** Ensure you have an environment variable set for this
58
- Message Type, eg, \n"
59
- msg = "#{msg}*** MESSAGE_ENDPOINT_MAPPINGS=#{e.message}:<QueueName>\n"
60
- raise StandardError, msg
58
+ raise StandardError, '' \
59
+ "*** Queue not found for, #{e.message}\n" \
60
+ "*** Ensure you have an environment variable set for this Message Type, eg, \n" \
61
+ "*** MESSAGE_ENDPOINT_MAPPINGS=#{e.message}:<QueueName>\n"
61
62
  end
63
+ # rubocop:enable Metrics/MethodLength
62
64
 
63
65
  def self.check_for_reply(queue_name)
64
66
  ENV['RSBMQ'] = 'beanstalk://localhost' if ENV['RSBMQ'].nil?
@@ -74,12 +76,15 @@ module RServiceBus2
74
76
  #{caller[0]}. #{string}"
75
77
  end
76
78
 
79
+ # rubocop:disable Metrics/CyclomaticComplexity
77
80
  def self.check_environment_variable(string)
78
- return false if ENV[string].nil?
81
+ return false if ENV[string].nil? || ENV[string] == ''
79
82
  return true if ENV[string] == true || ENV[string] =~ (/(true|t|yes|y|1)$/i)
80
83
  return false if ENV[string] == false ||
81
84
  ENV[string].nil? ||
82
85
  ENV[string] =~ (/(false|f|no|n|0)$/i)
83
- fail ArgumentError, "invalid value for Environment Variable: \"#{string}\""
86
+
87
+ raise ArgumentError, "invalid value for Environment Variable: \"#{string}\""
84
88
  end
89
+ # rubocop:enable Metrics/CyclomaticComplexity
85
90
  end