Hi Allard,
Your design is really brilliant! It doesn't leave anything,
I can think of, to be desired.
Providing an id to the framework is no price to pay to
get into such a win-win situation. Can that be eliminated by having
an annotation such as @AggregateIdentifier on the right
field of the payload? (With the possibility of alternate
definition externally, e.g. in an XML file?)
I assume switching of the aggregate-id will be via
an offline utility which accepts the user intent as
input and reshuffles the event-stores' events starting
from the beginning of the time.
A few wish items:
1) Please allow the Axon application plug its own
serialization/deserialization if it has any.
Considering better knowledge of the application
about its data it may be able to provide a more
efficient operator. Also it may save the application
a couple of deserialization/serialization cyles at
the borders of Axon. (Assuming the following wish is
also comes through)
2) Event at the expense of involving the application,
please reduce the number of times an event has to
serialized/deserialized during its life cycle within
the Axon world. Also at the end, give an option
to the application to get the raw serialized form of
the payload's data (instead of a java object). So
the application can pass that verbatim to the next
neighboring messaging system, if there is any.
3) If the Axon framework, for its own benefit, needs to
keep some data-fields along with the applications
payload, if possible, please make it friendly (i.e. as
much as compatible/similar as possible) to the
native AMQP and JMS requirements. I'm just
talking abstractly here. For example let's say AMQP
broker expects the user to provide a unique UUID
for each message. If Axon also happened to have a
needs to define and keep an identifier for each event,
and if making the id being a UUID doesn't hurt the
performance, then please select the UUID as the type
of the internal identifier.
Thanks for providing a fantastic messaging framework and
for constantly enhancing it. I can't wait to see the
Axon 2 with your new event-format design.
Regards,
Esfand