-
@Encounter27 wrote: @maxekman @bweston92 @mcarriere we are evaluating technology stack for one of our projects and I found that event horizon can solve our need of CQRS/ES in Golang 😊. So I want add feature to add outbox for complete read side separation. Please review my idea and design ! What I understood about the current flow of Eventhorizon: So, I was thinking about this since last couple of days, to solve the bellow problems:
So, I came up with the below design: So, in the above diagram, Two aggregate is there A1, A2. On A1 [A1:E1, A1:E2, A1:E3] events applied and on A2 [A2:E1, A2:E2] events applied.
Now, say we need 3 projectors:
Lifecycle/Responsibility of each projection routine:
Benefits:
Concern:
Please review and share the thought on this. I am not sure how much I could express in words :) , may be for more clarification we can have a short video call. Waiting for some feedback… Thanks, |
Beta Was this translation helpful? Give feedback.
Replies: 7 comments
-
@Encounter27: Moved your post to this issue. |
Beta Was this translation helpful? Give feedback.
-
It looks like the outbox is implementing a persistent pub/sub queue. I would prefer a solution that was open to hook in any such queue. Otherwise I agree that writing to the event store is a synchronous operation and publishing the events is asynchronous. Again, asynchronous distribution of the events is 'for free' with a queue. That projectors are independent 'pods' or 'services' that may go up and down independently I consider the principal use-case. Means for initializing or replay projections are essential. In my view the best protocol is the simplest possible and a sortable UUID + version number should be sufficient. The solution should be very flexible to the nature of the projectors implemented. Also things like browser front-ends listening on a web socket to update a user session need to be supported. |
Beta Was this translation helpful? Give feedback.
-
@Encounter27 There is an error in your diagram: the apply event and store aggregate always happens and must succeed before publishing an event. |
Beta Was this translation helpful? Give feedback.
-
@maxekman (I pasted here, as I am not able to replace the first diagram in your comment :) ) |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
I have completed some work on this https://github.com/Encounter27/eh-outbox |
Beta Was this translation helpful? Give feedback.
-
There is now an official outbox implemented, merged in #335. |
Beta Was this translation helpful? Give feedback.
There is now an official outbox implemented, merged in #335.