ruby_event_store 0.31.1 → 0.32.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -1
- data/Makefile +8 -8
- data/lib/ruby_event_store.rb +6 -1
- data/lib/ruby_event_store/async_dispatcher.rb +7 -1
- data/lib/ruby_event_store/async_proxy_strategy.rb +9 -0
- data/lib/ruby_event_store/client.rb +51 -76
- data/lib/ruby_event_store/composed_dispatcher.rb +22 -0
- data/lib/ruby_event_store/deprecated_read_api_rewriter.rb +13 -2
- data/lib/ruby_event_store/errors.rb +1 -6
- data/lib/ruby_event_store/immediate_async_dispatcher.rb +15 -0
- data/lib/ruby_event_store/in_memory_repository.rb +23 -2
- data/lib/ruby_event_store/instrumented_dispatcher.rb +21 -0
- data/lib/ruby_event_store/instrumented_repository.rb +61 -0
- data/lib/ruby_event_store/pub_sub/broker.rb +1 -1
- data/lib/ruby_event_store/pub_sub/dispatcher.rb +7 -12
- data/lib/ruby_event_store/spec/broker_lint.rb +20 -4
- data/lib/ruby_event_store/spec/dispatcher_lint.rb +4 -35
- data/lib/ruby_event_store/spec/event_repository_lint.rb +1048 -955
- data/lib/ruby_event_store/spec/scheduler_lint.rb +9 -0
- data/lib/ruby_event_store/specification.rb +47 -56
- data/lib/ruby_event_store/specification_reader.rb +35 -0
- data/lib/ruby_event_store/specification_result.rb +206 -0
- data/lib/ruby_event_store/version.rb +1 -1
- data/ruby_event_store.gemspec +2 -1
- metadata +25 -5
- data/lib/ruby_event_store/deprecations.rb +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bab926d223e59f80a3c302a45cc70f6cfd4d82e5f768294701ca5474c63c03bd
|
4
|
+
data.tar.gz: 8856dbe54742b11daa510d45b9d6b7dd48d19b82593796786c9a4a859b852655
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 528ba2456e22858c87dea1cea275fd97a63404080c2b7143248ccec3b43c2be45781fe20caf3460afb8d01e900cc5db40c99962686d66a84d40c66cee694288f
|
7
|
+
data.tar.gz: 65100e90a4ed432b7ded41bca6f15d30a4acd60b21bdea373ad191900f8f98bb610605481fd4b3f3d9b1bf19718a527114f8f6582b941d4a7f48286fe8f41ec3
|
data/Gemfile
CHANGED
data/Makefile
CHANGED
@@ -1,25 +1,25 @@
|
|
1
1
|
GEM_VERSION = $(shell cat ../RES_VERSION)
|
2
2
|
GEM_NAME = ruby_event_store
|
3
3
|
REQUIRE = $(GEM_NAME)
|
4
|
-
IGNORE = RubyEventStore
|
5
|
-
RubyEventStore::InMemoryRepository\#append_with_synchronize \
|
4
|
+
IGNORE = RubyEventStore::InMemoryRepository\#append_with_synchronize \
|
6
5
|
RubyEventStore::InMemoryRepository\#normalize_to_array \
|
7
6
|
RubyEventStore::Client\#normalize_to_array \
|
8
7
|
RubyEventStore::Client::Within\#normalize_to_array \
|
9
8
|
RubyEventStore::Client::Within\#add_thread_subscribers \
|
10
9
|
RubyEventStore::Client::Within\#add_thread_global_subscribers \
|
11
|
-
RubyEventStore::Client\#read_all_streams_forward \
|
12
|
-
RubyEventStore::Client\#read_all_streams_backward \
|
13
|
-
RubyEventStore::Client\#read_stream_events_forward \
|
14
|
-
RubyEventStore::Client\#read_stream_events_backward \
|
15
|
-
RubyEventStore::Client\#read_events_forward \
|
16
|
-
RubyEventStore::Client\#read_events_backward \
|
17
10
|
RubyEventStore::DeprecatedReadAPIRunner* \
|
18
11
|
RubyEventStore::DeprecatedReadAPIRewriter* \
|
19
12
|
RubyEventStore::Client\#publish_event \
|
20
13
|
RubyEventStore::Client\#publish_events \
|
21
14
|
RubyEventStore::Client\#link_to_stream \
|
22
15
|
RubyEventStore::Client\#append_to_stream \
|
16
|
+
RubyEventStore::AsyncDispatcher* \
|
17
|
+
RubyEventStore::AsyncProxyStrategy::Inline* \
|
18
|
+
RubyEventStore::SpecificationResult\#count \
|
19
|
+
RubyEventStore::SpecificationResult\#direction \
|
20
|
+
RubyEventStore::SpecificationResult\#stream_name \
|
21
|
+
RubyEventStore::SpecificationResult\#global_stream? \
|
22
|
+
|
23
23
|
|
24
24
|
SUBJECT ?= RubyEventStore*
|
25
25
|
|
data/lib/ruby_event_store.rb
CHANGED
@@ -8,10 +8,11 @@ require 'ruby_event_store/constants'
|
|
8
8
|
require 'ruby_event_store/client'
|
9
9
|
require 'ruby_event_store/metadata'
|
10
10
|
require 'ruby_event_store/specification'
|
11
|
+
require 'ruby_event_store/specification_result'
|
12
|
+
require 'ruby_event_store/specification_reader'
|
11
13
|
require 'ruby_event_store/event'
|
12
14
|
require 'ruby_event_store/stream'
|
13
15
|
require 'ruby_event_store/expected_version'
|
14
|
-
require 'ruby_event_store/deprecations'
|
15
16
|
require 'ruby_event_store/serialized_record'
|
16
17
|
require 'ruby_event_store/mappers/default'
|
17
18
|
require 'ruby_event_store/mappers/protobuf'
|
@@ -21,4 +22,8 @@ require 'ruby_event_store/correlated_commands'
|
|
21
22
|
require 'ruby_event_store/link_by_metadata'
|
22
23
|
require 'ruby_event_store/async_proxy_strategy'
|
23
24
|
require 'ruby_event_store/async_dispatcher'
|
25
|
+
require 'ruby_event_store/immediate_async_dispatcher'
|
26
|
+
require 'ruby_event_store/composed_dispatcher'
|
24
27
|
require 'ruby_event_store/version'
|
28
|
+
require 'ruby_event_store/instrumented_repository'
|
29
|
+
require 'ruby_event_store/instrumented_dispatcher'
|
@@ -1,8 +1,14 @@
|
|
1
1
|
module RubyEventStore
|
2
|
+
# @deprecated Use RubyEventStore::ImmediateAsyncDispatcher instead
|
2
3
|
class AsyncDispatcher < PubSub::Dispatcher
|
3
4
|
def initialize(proxy_strategy: AsyncProxyStrategy::Inline.new, scheduler:)
|
4
5
|
@async_proxy_strategy = proxy_strategy
|
5
6
|
@scheduler = scheduler
|
7
|
+
warn <<~EOW
|
8
|
+
RubyEventStore::AsyncDispatcher has been deprecated.
|
9
|
+
|
10
|
+
Use RubyEventStore::ImmediateAsyncDispatcher instead
|
11
|
+
EOW
|
6
12
|
end
|
7
13
|
|
8
14
|
def call(subscriber, _, serialized_event)
|
@@ -14,7 +20,7 @@ module RubyEventStore
|
|
14
20
|
end
|
15
21
|
|
16
22
|
def verify(subscriber)
|
17
|
-
|
23
|
+
@scheduler.async_handler?(subscriber) || super
|
18
24
|
end
|
19
25
|
end
|
20
26
|
end
|
@@ -1,6 +1,15 @@
|
|
1
1
|
module RubyEventStore
|
2
2
|
module AsyncProxyStrategy
|
3
|
+
# @deprecated Use RubyEventStore::ImmediateAsyncDispatcher instead
|
3
4
|
class Inline
|
5
|
+
def initialize
|
6
|
+
warn <<~EOW
|
7
|
+
RubyEventStore::AsyncProxyStrategy::Inline has been deprecated.
|
8
|
+
|
9
|
+
Use RubyEventStore::ImmediateAsyncDispatcher instead
|
10
|
+
EOW
|
11
|
+
end
|
12
|
+
|
4
13
|
def call(schedule_proc)
|
5
14
|
schedule_proc.call
|
6
15
|
end
|
@@ -7,12 +7,10 @@ module RubyEventStore
|
|
7
7
|
mapper: Mappers::Default.new,
|
8
8
|
subscriptions: PubSub::Subscriptions.new,
|
9
9
|
dispatcher: PubSub::Dispatcher.new,
|
10
|
-
page_size: PAGE_SIZE,
|
11
10
|
clock: ->{ Time.now.utc })
|
12
11
|
@repository = repository
|
13
12
|
@mapper = mapper
|
14
13
|
@broker = PubSub::Broker.new(subscriptions: subscriptions, dispatcher: dispatcher)
|
15
|
-
@page_size = page_size
|
16
14
|
@clock = clock
|
17
15
|
@metadata = Concurrent::ThreadLocalVar.new
|
18
16
|
end
|
@@ -23,7 +21,7 @@ module RubyEventStore
|
|
23
21
|
# @param events [Array<Event, Proto>, Event, Proto] event(s)
|
24
22
|
# @param stream_name [String] name of the stream for persisting events.
|
25
23
|
# @param expected_version [:any, :auto, :none, Integer] controls optimistic locking strategy. {http://railseventstore.org/docs/expected_version/ Read more}
|
26
|
-
# @return [
|
24
|
+
# @return [self]
|
27
25
|
def publish(events, stream_name: GLOBAL_STREAM, expected_version: :any)
|
28
26
|
enriched_events = enrich_events_metadata(events)
|
29
27
|
serialized_events = serialize_events(enriched_events)
|
@@ -36,7 +34,7 @@ module RubyEventStore
|
|
36
34
|
broker.(event, serialized_event)
|
37
35
|
end
|
38
36
|
end
|
39
|
-
|
37
|
+
self
|
40
38
|
end
|
41
39
|
|
42
40
|
# @deprecated Use {#publish} instead
|
@@ -72,11 +70,11 @@ module RubyEventStore
|
|
72
70
|
# Persists new event(s) without notifying any subscribed handlers
|
73
71
|
#
|
74
72
|
# @param (see #publish)
|
75
|
-
# @return [
|
73
|
+
# @return [self]
|
76
74
|
def append(events, stream_name: GLOBAL_STREAM, expected_version: :any)
|
77
75
|
serialized_events = serialize_events(enrich_events_metadata(events))
|
78
76
|
append_to_stream_serialized_events(serialized_events, stream_name: stream_name, expected_version: expected_version)
|
79
|
-
|
77
|
+
self
|
80
78
|
end
|
81
79
|
|
82
80
|
# Links already persisted event(s) to a different stream.
|
@@ -106,76 +104,10 @@ module RubyEventStore
|
|
106
104
|
# longer linked to the stream.
|
107
105
|
#
|
108
106
|
# @param stream_name [String] name of the stream to be cleared.
|
109
|
-
# @return [
|
107
|
+
# @return [self]
|
110
108
|
def delete_stream(stream_name)
|
111
109
|
repository.delete_stream(Stream.new(stream_name))
|
112
|
-
|
113
|
-
end
|
114
|
-
|
115
|
-
# @deprecated Use {#read} instead. {https://github.com/RailsEventStore/rails_event_store/releases/tag/v0.30.0 More info}
|
116
|
-
def read_events_forward(stream_name, start: :head, count: page_size)
|
117
|
-
warn <<~EOW
|
118
|
-
RubyEventStore::Client#read_events_forward has been deprecated.
|
119
|
-
|
120
|
-
Use following fluent API to receive exact results:
|
121
|
-
client.read.stream(stream_name).limit(count).from(start).each.to_a
|
122
|
-
EOW
|
123
|
-
read.stream(stream_name).limit(count).from(start).each.to_a
|
124
|
-
end
|
125
|
-
|
126
|
-
# @deprecated Use {#read} instead. {https://github.com/RailsEventStore/rails_event_store/releases/tag/v0.30.0 More info}
|
127
|
-
def read_events_backward(stream_name, start: :head, count: page_size)
|
128
|
-
warn <<~EOW
|
129
|
-
RubyEventStore::Client#read_events_backward has been deprecated.
|
130
|
-
|
131
|
-
Use following fluent API to receive exact results:
|
132
|
-
client.read.stream(stream_name).limit(count).from(start).backward.each.to_a
|
133
|
-
EOW
|
134
|
-
read.stream(stream_name).limit(count).from(start).backward.each.to_a
|
135
|
-
end
|
136
|
-
|
137
|
-
# @deprecated Use {#read} instead. {https://github.com/RailsEventStore/rails_event_store/releases/tag/v0.30.0 More info}
|
138
|
-
def read_stream_events_forward(stream_name)
|
139
|
-
warn <<~EOW
|
140
|
-
RubyEventStore::Client#read_stream_events_forward has been deprecated.
|
141
|
-
|
142
|
-
Use following fluent API to receive exact results:
|
143
|
-
client.read.stream(stream_name).each.to_a
|
144
|
-
EOW
|
145
|
-
read.stream(stream_name).each.to_a
|
146
|
-
end
|
147
|
-
|
148
|
-
# @deprecated Use {#read} instead. {https://github.com/RailsEventStore/rails_event_store/releases/tag/v0.30.0 More info}
|
149
|
-
def read_stream_events_backward(stream_name)
|
150
|
-
warn <<~EOW
|
151
|
-
RubyEventStore::Client#read_stream_events_backward has been deprecated.
|
152
|
-
|
153
|
-
Use following fluent API to receive exact results:
|
154
|
-
client.read.stream(stream_name).backward.each.to_a
|
155
|
-
EOW
|
156
|
-
read.stream(stream_name).backward.each.to_a
|
157
|
-
end
|
158
|
-
|
159
|
-
# @deprecated Use {#read} instead. {https://github.com/RailsEventStore/rails_event_store/releases/tag/v0.30.0 More info}
|
160
|
-
def read_all_streams_forward(start: :head, count: page_size)
|
161
|
-
warn <<~EOW
|
162
|
-
RubyEventStore::Client#read_all_streams_forward has been deprecated.
|
163
|
-
|
164
|
-
Use following fluent API to receive exact results:
|
165
|
-
client.read.limit(count).from(start).each.to_a
|
166
|
-
EOW
|
167
|
-
read.limit(count).from(start).each.to_a
|
168
|
-
end
|
169
|
-
|
170
|
-
# @deprecated Use {#read} instead. {https://github.com/RailsEventStore/rails_event_store/releases/tag/v0.30.0 More info}
|
171
|
-
def read_all_streams_backward(start: :head, count: page_size)
|
172
|
-
warn <<~EOW
|
173
|
-
RubyEventStore::Client#read_all_streams_backward has been deprecated.
|
174
|
-
|
175
|
-
Use following fluent API to receive exact results:
|
176
|
-
client.read.limit(count).from(start).backward.each.to_a
|
177
|
-
EOW
|
178
|
-
read.limit(count).from(start).backward.each.to_a
|
110
|
+
self
|
179
111
|
end
|
180
112
|
|
181
113
|
# Returns a single, persisted event based on its ID.
|
@@ -191,7 +123,14 @@ module RubyEventStore
|
|
191
123
|
#
|
192
124
|
# @return [Specification]
|
193
125
|
def read
|
194
|
-
Specification.new(repository, mapper)
|
126
|
+
Specification.new(SpecificationReader.new(repository, mapper))
|
127
|
+
end
|
128
|
+
|
129
|
+
# Gets list of streams where event is stored or linked
|
130
|
+
#
|
131
|
+
# @return [Array<Stream>] where event is stored or linked
|
132
|
+
def streams_of(event_id)
|
133
|
+
repository.streams_of(event_id)
|
195
134
|
end
|
196
135
|
|
197
136
|
# Subscribes a handler (subscriber) that will be invoked for published events of provided type.
|
@@ -345,6 +284,42 @@ module RubyEventStore
|
|
345
284
|
@metadata.value || EMPTY_HASH
|
346
285
|
end
|
347
286
|
|
287
|
+
# Overwrite existing event(s) with the same ID.
|
288
|
+
#
|
289
|
+
# Does not notify any subscribed handlers.
|
290
|
+
# Does not enrich with additional current metadata.
|
291
|
+
# Does not allow changing which streams these events are in.
|
292
|
+
# {http://railseventstore.org/docs/migrating_messages Read more}
|
293
|
+
#
|
294
|
+
# @example Add data and metadata to existing events
|
295
|
+
#
|
296
|
+
# events = event_store.read.limit(10).each.to_a
|
297
|
+
# events.each do |ev|
|
298
|
+
# ev.data[:tenant_id] = 1
|
299
|
+
# ev.metadata[:server_id] = "eu-west-2"
|
300
|
+
# end
|
301
|
+
# event_store.overwrite(events)
|
302
|
+
#
|
303
|
+
# @example Change event type
|
304
|
+
#
|
305
|
+
# events = event_store.read.limit(10).each.select{|ev| OldType === ev }.map do |ev|
|
306
|
+
# NewType.new(
|
307
|
+
# event_id: ev.event_id,
|
308
|
+
# data: ev.data,
|
309
|
+
# metadata: ev.metadata,
|
310
|
+
# )
|
311
|
+
# end
|
312
|
+
# event_store.overwrite(events)
|
313
|
+
#
|
314
|
+
# @param events [Array<Event, Proto>, Event, Proto] event(s) to serialize and overwrite again
|
315
|
+
# @return [self]
|
316
|
+
def overwrite(events_or_event)
|
317
|
+
events = normalize_to_array(events_or_event)
|
318
|
+
serialized_events = serialize_events(events)
|
319
|
+
repository.update_messages(serialized_events)
|
320
|
+
self
|
321
|
+
end
|
322
|
+
|
348
323
|
EMPTY_HASH = {}.freeze
|
349
324
|
private_constant :EMPTY_HASH
|
350
325
|
|
@@ -385,6 +360,6 @@ module RubyEventStore
|
|
385
360
|
@metadata.value = value
|
386
361
|
end
|
387
362
|
|
388
|
-
attr_reader :repository, :mapper, :broker, :clock
|
363
|
+
attr_reader :repository, :mapper, :broker, :clock
|
389
364
|
end
|
390
365
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module RubyEventStore
|
2
|
+
class ComposedDispatcher
|
3
|
+
def initialize(*dispatchers)
|
4
|
+
@dispatchers = dispatchers
|
5
|
+
end
|
6
|
+
|
7
|
+
def call(subscriber, event, serialized_event)
|
8
|
+
@dispatchers.each do |dispatcher|
|
9
|
+
if dispatcher.verify(subscriber)
|
10
|
+
dispatcher.call(subscriber, event, serialized_event)
|
11
|
+
break
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def verify(subscriber)
|
17
|
+
@dispatchers.any? do |dispatcher|
|
18
|
+
dispatcher.verify(subscriber)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -4,11 +4,22 @@ require 'ruby_event_store'
|
|
4
4
|
|
5
5
|
|
6
6
|
module RubyEventStore
|
7
|
-
class DeprecatedReadAPIRewriter < ::Parser::
|
7
|
+
class DeprecatedReadAPIRewriter < ::Parser::TreeRewriter
|
8
|
+
DEPRECATED_READER_METHODS = [
|
9
|
+
:read_all_streams_backward,
|
10
|
+
:read_events_backward,
|
11
|
+
:read_stream_events_backward,
|
12
|
+
:read_all_streams_forward,
|
13
|
+
:read_events_forward,
|
14
|
+
:read_stream_events_forward
|
15
|
+
]
|
16
|
+
private_constant :DEPRECATED_READER_METHODS
|
17
|
+
|
8
18
|
def on_send(node)
|
9
19
|
node.each_descendant(:send) { |desc_node| on_send(desc_node) }
|
10
20
|
|
11
21
|
_, method_name, *args = node.children
|
22
|
+
return unless DEPRECATED_READER_METHODS.include?(method_name)
|
12
23
|
replace_range = node.location.selector
|
13
24
|
replace_range = replace_range.join(node.location.end) if node.location.end
|
14
25
|
|
@@ -64,4 +75,4 @@ module RubyEventStore
|
|
64
75
|
node.children[0].to_sym
|
65
76
|
end
|
66
77
|
end
|
67
|
-
end
|
78
|
+
end
|
@@ -8,6 +8,7 @@ module RubyEventStore
|
|
8
8
|
EventDuplicatedInStream = Class.new(StandardError)
|
9
9
|
NotSupported = Class.new(StandardError)
|
10
10
|
ReservedInternalName = Class.new(StandardError)
|
11
|
+
InvalidHandler = Class.new(StandardError)
|
11
12
|
|
12
13
|
class EventNotFound < StandardError
|
13
14
|
attr_reader :event_id
|
@@ -16,10 +17,4 @@ module RubyEventStore
|
|
16
17
|
@event_id = event_id
|
17
18
|
end
|
18
19
|
end
|
19
|
-
|
20
|
-
class InvalidHandler < StandardError
|
21
|
-
def initialize(object)
|
22
|
-
super("#call method not found in #{object.inspect} subscriber. Are you sure it is a valid subscriber?")
|
23
|
-
end
|
24
|
-
end
|
25
20
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module RubyEventStore
|
2
|
+
class ImmediateAsyncDispatcher
|
3
|
+
def initialize(scheduler:)
|
4
|
+
@scheduler = scheduler
|
5
|
+
end
|
6
|
+
|
7
|
+
def call(subscriber, _, serialized_event)
|
8
|
+
@scheduler.call(subscriber, serialized_event)
|
9
|
+
end
|
10
|
+
|
11
|
+
def verify(subscriber)
|
12
|
+
@scheduler.verify(subscriber)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -36,18 +36,39 @@ module RubyEventStore
|
|
36
36
|
end
|
37
37
|
|
38
38
|
def read(spec)
|
39
|
-
events = spec.
|
39
|
+
events = spec.stream.global? ? global : stream_of(spec.stream.name)
|
40
40
|
events = events.reverse if spec.backward?
|
41
41
|
events = events.drop(index_of(events, spec.start) + 1) unless spec.head?
|
42
|
-
events = events[0...spec.
|
42
|
+
events = events[0...spec.limit] if spec.limit?
|
43
43
|
if spec.batched?
|
44
44
|
batch_reader = ->(offset, limit) { events.drop(offset).take(limit) }
|
45
45
|
BatchEnumerator.new(spec.batch_size, events.size, batch_reader).each
|
46
|
+
elsif spec.first?
|
47
|
+
events.first
|
48
|
+
elsif spec.last?
|
49
|
+
events.last
|
46
50
|
else
|
47
51
|
events.each
|
48
52
|
end
|
49
53
|
end
|
50
54
|
|
55
|
+
def update_messages(messages)
|
56
|
+
messages.each do |new_msg|
|
57
|
+
location = global.index{|m| new_msg.event_id.eql?(m.event_id)} or raise EventNotFound.new(new_msg.event_id)
|
58
|
+
global[location] = new_msg
|
59
|
+
streams.values.each do |str|
|
60
|
+
location = str.index{|m| new_msg.event_id.eql?(m.event_id)}
|
61
|
+
str[location] = new_msg if location
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def streams_of(event_id)
|
67
|
+
streams.select do |_, stream_events|
|
68
|
+
stream_events.any? { |event| event.event_id.equal?(event_id) }
|
69
|
+
end.map { |name, _| Stream.new(name) }
|
70
|
+
end
|
71
|
+
|
51
72
|
private
|
52
73
|
|
53
74
|
def stream_of(name)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module RubyEventStore
|
2
|
+
class InstrumentedDispatcher
|
3
|
+
def initialize(dispatcher, instrumentation)
|
4
|
+
@dispatcher = dispatcher
|
5
|
+
@instrumentation = instrumentation
|
6
|
+
end
|
7
|
+
|
8
|
+
def call(subscriber, event, serialized_event)
|
9
|
+
instrumentation.instrument("call.dispatcher.rails_event_store", event: event, subscriber: subscriber) do
|
10
|
+
dispatcher.call(subscriber, event, serialized_event)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def verify(subscriber)
|
15
|
+
dispatcher.verify(subscriber)
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
attr_reader :instrumentation, :dispatcher
|
20
|
+
end
|
21
|
+
end
|