Nov 17, 2020
Good points. SQLExceptions are more difficult to disambiguate in terms of error types.
Regarding Aggregates and events, the main point is that when a change to an Aggregate is made, that change is published as an event with the Aggregate’s ID as the partition key. The payload of that event can be in whatever form we best determine; indeed as you point out, we shouldn’t just dump out the Aggregate’s model, but be thoughtful about its published form. That’s probably where using Avro would help.