The Job Controller

Master channel programs are run under the control of the job controller,
a program that controls the message queues and invokes the channel programs
to do the actual message delivery. The job controller is a multithreaded process
and is one of the few processes that is always present in the Messaging Server
system. The channel processing jobs themselves are created by the job controller
but are transient and might not be present when there is no work for them
to do.

Job controller configuration settings determine if there is always at
least one instance of a channel processing program. In many cases, these are
set so that there is always at least one instance of the service program even
when there is no immediate work to do. In other cases, there will be an instance
for a set period of time after it last did some work but there is nothing
to do currently.

Slave channels, which accept external messages, by queueing a
message, notify the job controller of a newly created message file. The job
controller enters this information into its internal data structure and if
necessary creates a master channel job to process the message in that queue.
This job creation might not be necessary if the job controller determines
that an existing channel job can process the newly queued message file. When
the master channel job starts, it gets its message assignment from the job
controller. When it is finished with the message, the master channel updates the job controller as to the status of
its processing. The status is either that the message is successfully dequeued
or the message should be rescheduled for retrying.

The job controller maintains information about message priority and
previous delivery attempts that failed, allowing for advantageous scheduling
of channel jobs. The job controller also keeps track of the state of each
job. The state can be idle, how long the job has been idle, or whether the
job is busy. Tracking state enables the job controller to keep an optimal
pool of channel jobs.

Note –

There are currently only two slave channels, SMTP slave and LMTP
slave. These programs are controlled by the dispatcher, which is described
next.