evt-messaging 2.5.1.2 → 2.5.5.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: 0b88d9fc2f126343b5373d93c22046df73c920bdfba1921e1c606ee2929d8240
4
- data.tar.gz: 46ca26755b68db2c9c4eb9427e530bfc6579857ef93a298912e4774ada3521af
3
+ metadata.gz: 7461dc41752ca20949d07bd6cdd226d26b813e7fe094e7eec8c5191cb6ac308b
4
+ data.tar.gz: bdeffa8dd6a53ec121c06db08f0cb63569db4eac34910716bd433dfca1cf3068
5
5
  SHA512:
6
- metadata.gz: c753037cf3097102bbc9a7fe3a52eaa95a7cc63213caeaa8e23d7580f3a8ea616e6161e073f726289c8ee0be84a4b592719584b62b840c3fb01e956f5be63d30
7
- data.tar.gz: 15f5370691d0868a5730de4683fbc1a1993673d0ff2a6ea49bf79f98dc104a2cb67ce5cf3df2177566b8dfde8718931d86800c68815667e6cd7b368c3e65449f
6
+ metadata.gz: 688353dc94af44d17c52803e872dfe307f3aeafcef13ac78754dcd0b1bb9f1e411a75c9482c46c3f5ef72c56586d40c6499ace71ac6db801c2209faccac5ed08
7
+ data.tar.gz: e92b9f581f4acd8688d7e399d8b6e94c1d36710c40a8223bb891d339e2fdace923fc2c9e554d226e02edc9e9229fba705ca5e75992bd889a4b90cd71b05ab561
@@ -1,4 +1,5 @@
1
1
  require 'message_store'
2
+ require 'settings'
2
3
 
3
4
  require 'messaging/log'
4
5
 
@@ -12,4 +12,5 @@ require 'messaging/controls/message'
12
12
  require 'messaging/controls/metadata'
13
13
  require 'messaging/controls/batch'
14
14
  require 'messaging/controls/write'
15
+ require 'messaging/controls/settings'
15
16
  require 'messaging/controls/handler'
@@ -1,6 +1,10 @@
1
1
  module Messaging
2
2
  module Controls
3
3
  module Handler
4
+ def self.example
5
+ Example.new
6
+ end
7
+
4
8
  class Example
5
9
  include Messaging::Handle
6
10
  include Controls::Message
@@ -97,6 +101,22 @@ module Messaging
97
101
  end
98
102
  end
99
103
  end
104
+
105
+ module Settings
106
+ Error = Class.new(RuntimeError)
107
+
108
+ class Example
109
+ include Messaging::Handle
110
+
111
+ setting :some_setting
112
+
113
+ attr_accessor :some_other_setting
114
+
115
+ def handle(message_data)
116
+ raise Settings::Error if some_setting.nil?
117
+ end
118
+ end
119
+ end
100
120
  end
101
121
  end
102
122
  end
@@ -49,6 +49,12 @@ module Messaging
49
49
  "#{causation_message_stream_name}/#{causation_message_position}"
50
50
  end
51
51
 
52
+ def self.properties
53
+ {
54
+ some_property: 'some property value'
55
+ }
56
+ end
57
+
52
58
  def self.time
53
59
  Time::Raw.example
54
60
  end
@@ -57,6 +63,7 @@ module Messaging
57
63
  {
58
64
  stream_name: stream_name,
59
65
  position: position,
66
+ global_position: global_position,
60
67
 
61
68
  causation_message_stream_name: causation_message_stream_name,
62
69
  causation_message_position: causation_message_position,
@@ -66,7 +73,8 @@ module Messaging
66
73
 
67
74
  reply_stream_name: reply_stream_name,
68
75
 
69
- global_position: global_position,
76
+ properties: properties,
77
+
70
78
  time: time,
71
79
 
72
80
  schema_version: schema_version
@@ -0,0 +1,16 @@
1
+ module Messaging
2
+ module Controls
3
+ module Settings
4
+ def self.example
5
+ ::Settings.build(data)
6
+ end
7
+
8
+ def self.data
9
+ {
10
+ some_setting: 'some setting value',
11
+ some_other_setting: 'some other setting value'
12
+ }
13
+ end
14
+ end
15
+ end
16
+ end
@@ -6,6 +6,7 @@ module Messaging
6
6
  cls.class_exec do
7
7
  include Dependency
8
8
  include Virtual
9
+ include Settings::Setting
9
10
 
10
11
  def handler_logger
11
12
  @handler_logger ||= Log.get(self)
@@ -25,10 +26,14 @@ module Messaging
25
26
  end
26
27
 
27
28
  module Build
28
- def build(strict: nil, session: nil)
29
+ def build(strict: nil, session: nil, settings: nil)
29
30
  instance = new
30
31
  instance.strict = strict
31
32
 
33
+ if not settings.nil?
34
+ settings.set(instance)
35
+ end
36
+
32
37
  if Build.configure_session?(instance)
33
38
  instance.configure(session: session)
34
39
  else
@@ -60,8 +65,8 @@ module Messaging
60
65
  end
61
66
 
62
67
  module Call
63
- def call(message_or_message_data, strict: nil, session: nil)
64
- instance = build(strict: strict, session: session)
68
+ def call(message_or_message_data, strict: nil, session: nil, settings: nil)
69
+ instance = build(strict: strict, session: session, settings: settings)
65
70
  instance.(message_or_message_data)
66
71
  end
67
72
  end
@@ -154,7 +159,7 @@ module Messaging
154
159
  def handle_message(message, strict: nil)
155
160
  strict ||= self.strict?
156
161
 
157
- handler_logger.trace(tags: [:handle, :message]) { "Handling message (Message class: #{message.class.name})" }
162
+ handler_logger.trace(tags: [:dispatch, :message]) { "Dispatching message (Message class: #{message.class.name})" }
158
163
  handler_logger.trace(tags: [:data, :message]) { message.pretty_inspect }
159
164
 
160
165
  handler = self.class.handler(message)
@@ -162,8 +167,12 @@ module Messaging
162
167
  unless handler.nil?
163
168
  message_type = message.message_type
164
169
 
165
- handler_logger.debug(tag: :handle) { "Handling Message (Type: #{message_type}, Method: #{handler})" }
170
+ handler_logger.trace(tag: [:handle, :message]) { "Handling Message (Type: #{message_type}, Method: #{handler})" }
171
+
166
172
  public_send(handler, message)
173
+
174
+ handler_logger.info(tags: [:handle, :message]) { "Handled message (Message class: #{message.class.name})" }
175
+ handler_logger.info(tags: [:data, :message]) { message.pretty_inspect }
167
176
  else
168
177
  if strict
169
178
  error_msg = "#{self.class.name} does not implement a handler for #{message.message_type}. Cannot handle the message."
@@ -172,16 +181,13 @@ module Messaging
172
181
  end
173
182
  end
174
183
 
175
- handler_logger.info(tags: [:handle, :message]) { "Handled message (Message class: #{message.class.name})" }
176
- handler_logger.info(tags: [:data, :message]) { message.pretty_inspect }
177
-
178
184
  message
179
185
  end
180
186
 
181
187
  def handle_message_data(message_data, strict: nil)
182
188
  strict ||= self.strict?
183
189
 
184
- handler_logger.trace(tags: [:handle, :message_data]) { "Handling message data (Type: #{message_data.type})" }
190
+ handler_logger.trace(tags: [:dispatch, :message_data]) { "Dispatching message data (Type: #{message_data.type})" }
185
191
  handler_logger.trace(tags: [:data, :message_data]) { message_data.pretty_inspect }
186
192
 
187
193
  message = nil
@@ -203,15 +209,17 @@ module Messaging
203
209
 
204
210
  message_type = message.message_type
205
211
 
206
- handler_logger.debug(tag: :handle) { "Handling Message (Type: #{message_type}, Method: #{handler})" }
207
212
  public_send(handler, message)
208
213
  else
209
214
  if respond_to?(:handle)
210
215
  message_type = message_data.type
211
- handler_logger.debug(tag: :handle) { "Handling Message Data (Type: #{message_type}, Method: handle" }
216
+ handler_logger.trace(tag: [:handle, :message_data]) { "Handling Message Data (Type: #{message_type}, Method: handle" }
212
217
 
213
218
  handle(message_data)
214
219
 
220
+ handler_logger.info(tags: [:handle, :message_data]) { "Handled message data (Type: #{message_data.type})" }
221
+ handler_logger.info(tags: [:data, :message_data]) { message_data.pretty_inspect }
222
+
215
223
  message = message_data
216
224
  else
217
225
  if strict
@@ -222,9 +230,6 @@ module Messaging
222
230
  end
223
231
  end
224
232
 
225
- handler_logger.info(tags: [:handle, :message_data]) { "Handled message data (Type: #{message_data.type})" }
226
- handler_logger.info(tags: [:data, :message_data]) { message_data.pretty_inspect }
227
-
228
233
  message
229
234
  end
230
235
  end
@@ -33,6 +33,8 @@ module Messaging
33
33
 
34
34
  attribute :reply_stream_name, String
35
35
 
36
+ attribute :properties, Hash, default: -> { Hash.new }
37
+
36
38
  attribute :time, Time
37
39
 
38
40
  attribute :schema_version, String
@@ -64,19 +66,21 @@ module Messaging
64
66
  return false
65
67
  end
66
68
 
67
- if causation_message_position.nil? && preceding_metadata.position.nil?
69
+ if causation_message_stream_name != preceding_metadata.stream_name
68
70
  return false
69
71
  end
70
72
 
71
- if causation_message_global_position.nil? && preceding_metadata.global_position.nil?
73
+
74
+ if causation_message_position.nil? && preceding_metadata.position.nil?
72
75
  return false
73
76
  end
74
77
 
75
- if causation_message_stream_name != preceding_metadata.stream_name
78
+ if causation_message_position != preceding_metadata.position
76
79
  return false
77
80
  end
78
81
 
79
- if causation_message_position != preceding_metadata.position
82
+
83
+ if causation_message_global_position.nil? && preceding_metadata.global_position.nil?
80
84
  return false
81
85
  end
82
86
 
@@ -84,8 +88,18 @@ module Messaging
84
88
  return false
85
89
  end
86
90
 
87
- if reply_stream_name != preceding_metadata.reply_stream_name
88
- return false
91
+
92
+ if not preceding_metadata.correlation_stream_name.nil?
93
+ if correlation_stream_name != preceding_metadata.correlation_stream_name
94
+ return false
95
+ end
96
+ end
97
+
98
+
99
+ if not preceding_metadata.reply_stream_name.nil?
100
+ if reply_stream_name != preceding_metadata.reply_stream_name
101
+ return false
102
+ end
89
103
  end
90
104
 
91
105
  true
@@ -114,6 +128,45 @@ module Messaging
114
128
  end
115
129
  alias :correlates? :correlated?
116
130
 
131
+ def set_property(name, value)
132
+ properties[name] = value
133
+ end
134
+
135
+ def get_property(name)
136
+ properties[name]
137
+ end
138
+
139
+ def delete_property(name)
140
+ properties.delete(name)
141
+ end
142
+
143
+ def self.source_attribute_names
144
+ [
145
+ :stream_name,
146
+ :position,
147
+ :global_position
148
+ ]
149
+ end
150
+
151
+ def self.causation_attribute_names
152
+ [
153
+ :causation_message_stream_name,
154
+ :causation_message_position,
155
+ :causation_message_global_position
156
+ ]
157
+ end
158
+
159
+ def self.origin_attribute_names
160
+ [
161
+ :correlation_stream_name,
162
+ :reply_stream_name
163
+ ]
164
+ end
165
+
166
+ def self.workflow_attribute_names
167
+ causation_attribute_names + origin_attribute_names
168
+ end
169
+
117
170
  def self.transient_attributes
118
171
  [
119
172
  :stream_name,
@@ -25,6 +25,11 @@ module Messaging
25
25
  message_data.data = message.to_h
26
26
 
27
27
  metadata = message.metadata.to_h
28
+
29
+ if metadata[:properties].empty?
30
+ metadata[:properties] = nil
31
+ end
32
+
28
33
  metadata.delete_if { |k, v| v.nil? }
29
34
 
30
35
  message_data.metadata = metadata
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evt-messaging
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.1.2
4
+ version: 2.5.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Eventide Project
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-25 00:00:00.000000000 Z
11
+ date: 2020-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: evt-message_store
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: evt-settings
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: test_bench
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -54,6 +68,7 @@ files:
54
68
  - lib/messaging/controls/message_data.rb
55
69
  - lib/messaging/controls/metadata.rb
56
70
  - lib/messaging/controls/random.rb
71
+ - lib/messaging/controls/settings.rb
57
72
  - lib/messaging/controls/stream_name.rb
58
73
  - lib/messaging/controls/time.rb
59
74
  - lib/messaging/controls/write.rb
@@ -76,7 +91,7 @@ homepage: https://github.com/eventide-project/messaging
76
91
  licenses:
77
92
  - MIT
78
93
  metadata: {}
79
- post_install_message:
94
+ post_install_message:
80
95
  rdoc_options: []
81
96
  require_paths:
82
97
  - lib
@@ -92,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
107
  version: '0'
93
108
  requirements: []
94
109
  rubygems_version: 3.1.2
95
- signing_key:
110
+ signing_key:
96
111
  specification_version: 4
97
112
  summary: Common primitives for platform-specific messaging implementations for Eventide
98
113
  test_files: []