We are embarking on a journey with SCPI and Enterprise Messaging. Our architects have recommended that we implement an asynchronous Event driven Architecture. One of the topics we are investigating is keeping messages delivered in sequence. We have consumed (see what I did there?) articles Exactly Once with Sequencing which implements a custom sequencing mechanism and others on Enterprise messaging. However using Enterprise Messaging to underpin an Event Driven Integration, I am wondering why mechanisms are not already 'out of the box' for this type of requirement. It makes me wonder whether modern event driven architectures assume that the subscribing application/service can handle out-of-sequence change events (with delta or full records). Alternatively does 'best practice' assume you will only use Cloud Events (with only business object keys in the message) and then the data can't be out-of-sequence since the current data is always retrieved at the time of consumption?
Additionally this may seem like a 'Resequencer' pattern, however my understanding is that this pattern requires you to withhold all events until a 'final' event is received (before sequencing the messages and releasing them). However our requirements a) only require sequencing within a business object eg.an Employee record delta or a Work Order Status Update, so therefore don't want an entire queue held up for a single Business object event out of sequence and b) we want as little delay as possible on events and can't wait until the final event before sequencing occurs.
Your thoughts would be much appreciate!