Simpler way to trigger projections #139
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR, introduces new way of triggering projections.
Old solution
Before each Projection's Event Handler was connected directly to
Event Bus
. As we did not want to trigger the Event Handler directly, as we needed to pull the events fromEvent Stream
(Stream Source), it required bit of complex solution of intercepting the Event Handler checking what kind of execution it's and based on that executeprojection
instead or skip if that was polling projection.New solution
New solution reorganizes the flow, so it does not require conditional flow changes.
Whenever we register Event Handler that is connected to Stream Source, it will not connect it to the Event Bus.
Polling
If polling consumer was chosen for the projection. It will register polling consumer that will continuesly pull the stream from database. No extra configuration needed.
Synchronous Event-Driven
If synchronous event driven was chosen, we connect the Projection (instead of Event Handler) to the Event Bus.
Asynchronous Event-Driven
If asynchronous event driven was chosen, we set up Projection as asynchronous after connecting it to the Event Bus