John.
This is not a solution for your problem, but it may provide other avenues of investigation.
We were required to load millions of LAB messages (from files with <= 1000 messages in each file ) into a a clinical manager system. The clinical manager system had issues with:
memory leaks, requiring an hourly bounce of the process; and
database issues, requiring regular ‘tuning’ (stopping the interfaces); and
half duplex message-ack communications; and
used MSMQ to store messages which would potentially lose them if it crashed.
Backups were also taken regularly.
To automate Cloverleaf and negate the need to manually pause for the backups and issues above, we used counters on the send (message) and receive (ack) threads and the file read code would return ‘NO FILE’ if the difference between the counters exceeded a threshold and ‘a message file’ when not.
This meant that the message flow was regulated and the maximum messages were sent whenever possible.