I have a server and a group of client objects. The server has a 20 process e-mail sending farm with a single queue manager controlled by link messages. One script loads up the queue manager with all of the messages for the client objects, then starts (on a timer event) calling llGetNextEmail to retrieve the "acknowledgement" messages that are sent by each client when it recieves the message from the server. The calls to llGetNextEmail are made on a 2-second timer event, and the email() event handler calls llGetNextEmail again if more than one message was reported to the email event.
The problem with this is: when I actually stress-test it, with 50 clients, the last 5 acknowledgement messages never arrive. All the messages are reported as being sent. I at first guessed that they were arriving while the server's e-mail queue was too big and being discarded, but I then tried adding a random 1-5 second delay to each client between recieving the message and sending the acknowledgement to break the e-mails up but this made no difference. Does anyone have any idea how this can be managed reliably?