We have a requirement to process transactions as an ordered sequence. Transactions are initiated on system 'A' and written to a DB/2 table. A DB/2 trigger then forwards the transaction via MQSeries to system 'B' where the transaction is completed.
The problem we are having is that a race condition is established because execution of the DB/2 trigger is not serialized with respect to the order transactions are written to the table. The net result is that the order transactions are received on system 'B' is not the same as they were initiated on system 'A'.
Having system 'A' add a sequence number to the transaction is feasable but would only help detect a sequencing error on the system 'B' side of the queue. Our MQSeries is already configured for FIFO processing. The root of the problem is ensuring the triggers PUT their messages on the queue in the correct sequence.
To make matters a bit more interesting, we have multiple instances of system 'A' and one of system 'B'. However, only the transactions from the same instance of system 'A' need to retain their processing order on system 'B'.
Ideas?