rservicebus2 0.2.8 → 0.2.13

Sign up to get free protection for your applications and to get access to all the features.
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