David.
We completed a data load of about 25 million messages into our clinical manager application last year as part of a consolidation process.
We have stored messages in SMAT files for years and were replaying these.
We used one site to read messages from a thread and send to our CM system on the OB thread. Our CM application was half-duplex and we added counters for message out and ACKs in.
We placed some ‘smarts’ in some TCL code in the local-fileset, which In ‘simple’ terms accomplished this is:
Use the thread local ‘read’ mode to read a list of files in a directory.
If the first file was a zipped SMAT file, split this into files of 1000 records and return ‘no files found’.
If this was a file (of possible 1000 records) return ‘this one file’ (which will be read at a determined rate)
If the number of records sent was a ‘threshold’ greater that the number of records received return ‘no files found’.
If the ‘stop thread’ file existed return ‘no files found’
This meant that Cloverleaf could self regulate and not queue too many on the CM side.
We sent the message in blocks and stopped for backups etc. at regular intervals.
We had were vendor issues as their software required an hourly bounce for memory leaks when receiving 30,000 per hour.
There were also data issues as tests had changed over the years etc.
There were a few mistakes on our side with files in the wrong order as this was a manual process.
We tested 000’s of message with the CM application in an attempt to find the problems and had a fix ready for the real load, but still had issues.
IMHO it was a good technical project, but would have been simpler to load the data into a database (the vendor had provided an extract process) and web enable this!