(FAQ) How does Dynamic Queuing work?

How does Dynamic Queuing work?

Here is the sequence of delivery when MDaemon is using Dynamic Queuing:

(a) A queue run event triggers
(b) MDaemon builds an internal message list of the .msg files that exist at that time and need to be sent out
(c) MDaemon starts sending out the messages on that list

While (c) is taking place something can come along and trigger (a) again (such as new mail arriving, a counter getting hit, or a SEM file, etc). That will cause the internal message list to be rebuilt (ie., (b) happens). (c) doesn't restart because it's already in progress; however, because the internal message list was rebuilt any new message files are now part of that list and because the internal message list is sorted according to message priority some or all newly arrived message files might be the very next to go out because they sort to the top of the list.

Dynamic queuing is enabled by default because it's the most efficient way to distribute mail. It's not the best on bandwidth though so there is a switch to disable it in the MDaemon.ini:

DynamicQueueing=No (default Yes)

When disabled, the queues work once per run until all message that were queued at the time the run started are delivered. Any new message arriving during a queue run must will almost always wait until the next queue run begins.