the message that failed for the first time to process and changed existing data then it is necessary to check whether the data to be processed again. You can imagine that new incoming message for same operation and same entity is received but was processed before first one.MSG1 setCustomer(externalCustomerId=5) OK
MSG2 setCustomer(externalCustomerId=5) PARTLY_FAILED
MSG3 setCustomer(externalCustomerId=5) OK
Message MSG2 doesn't have to be further processed because there is the message MSG3 which is newer (receiveTimestamp) and changes the same entity with same "object ID".
Check obsolete messages in the queue
Message MSG2 doesn't have to be further processed because there is the message MSG3 which is newer (receiveTimestamp) and changes the same entity with same "object ID".