--
You received this message because you are subscribed to the Google Groups "DDD/CQRS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dddcqrs+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
This is one way of handling it. There are many ux strategies that can be applied to minimize people noticing eventual consistency
--
Btw if you have an ack why would you inform them later that it failed?
--
--
You received this message because you are subscribed to the Google Groups "DDD/CQRS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dddcqrs+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
Regarding the ack, I was thinking of an "command acknowledge ack", not an "command successful ack", which feels "dirtier/clumsier". However I present this option as well in my "mitigation options" part.
There is another thread recently you should read your improved way doesnt exist (it would be an event not a command) and even then has a ton of tradeoffs where it becomes much more complex. It should not be the default.
--
You received this message because you are subscribed to the Google Groups "DDD/CQRS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dddcqrs+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Yet, afterward, eventual consistency started to be a big issue, especially the list/entry update example :I've a list, I open the details of one item, I change something and returns on the list: most likely the change isn't displayed yet... Really confusing for the user. Baddd.
There I would suggest to do some "optimistic display" in the ui: sending the command, wait for the ack "taken by the model" and then consider the outcome as successful and display accordingly. Inform later the user that it did fail.
--
Hi all
--
Discussing this with Eric Evans revealed a very simple and sound guideline. When examining the use case (or story), ask whether it’s the job of the user executing the use case to make the data consistent. If it is, try to make it transactionally consistent, but only by adhering to the other rules of Aggregates. If it is another user’s job, or the job of the system, allow it to be eventually consistent. That bit of wisdom not only provides a convenient tie breaker, but it helps us gain a deeper understanding of our domain. It exposes the real system invariants: the ones that must be kept transactionally consistent. That understanding is much more valuable than defaulting to a technical leaning.
This is a great tip to add to the Aggregate Rules of Thumb. Since there are other forces to consider, it may not always lead to the final choice between transactional and eventual consistency but will usually provide deeper insight into the model.
--
@Jo
Actually I do have a concern with the view emitting an event to say "updated" : what if there is more than one instance of the view? Should the client somehow be able to make sure it looks into the updated view instance and no other? This doesn't sound good.