Previous | Contents | Index |
The following discussion does not apply to channels marked with either the slave or periodic channel keywords.
|
As described in Section 1.4, when a message is first enqueued, an immediate message delivery job attempts to deliver the message.3 Should that delivery attempt fail, then the message will either be returned to the sender or retained for subsequent delivery attempts if, respectively, the failure was permanent or temporary in nature. When the message is retained, periodic delivery jobs will attempt to redeliver any messages which have yet to be delivered.
For some channels, however, it can not be deemed desirable to wait for the next periodic delivery job before another delivery attempt is made. With the BACKOFF channel option and mapping table, it is possible to schedule an immediate message delivery job to attempt a subsequent delivery of a message
Each entry in the BACKOFF mapping table has the format (note the use of
the vertical bar character, |
)
channel|n time |
channel
is the name of the channel, and
where n
is an integer given by the formula
n
= (number of delivery attempts so far - 1) /
BACKOFF with BACKOFF the value specified by the BACKOFF option in the
channel's option file. time
is an unsigned
integer number of seconds to wait before making another delivery
attempt.
On OpenVMS, there is an alternate format for specifying the
time
value. If the time
value is an unsigned integer, it will be interpreted as described
above, as the number of seconds to wait before making the next delivery
attempt. Alternatively, the value can be specified as an absolute,
delta, or combination time specifying when the next delivery attempt
should be made.
When the BACKOFF option specifies a value greater than zero, then for
each message which cannot be delivered, the BACKOFF mapping table will
be consulted. If the table exists and a matching entry is found
(i.e., an entry which matches the channel name and
n
), then a delivery job to attempt redelivery for
that message will be queued to run at the time specified by
time
. If the table does not exist or no matching
entry is found, then no immediate job will be queued and the message
will be retried when the next periodic delivery job runs.4
For example, suppose that BACKOFF=5 has been specified and that the channel name is dpd_pmdf. Then the following BACKOFF mapping table,
BACKOFF dpd_pmdf|0 300 dpd_pmdf|1 600 |
BACKOFF dpd_pmdf|0 +00:05:00 dpd_pmdf|1 +00:10:00 |
n
=0=(1-1)/5, (2-1)/5,
(3-1)/5, (4-1)/5, (5-1)/5], and every 10 minutes for the next five
attempts [n
=1=(6-1)/5, ..., (10-1)/5]. All
further attempts will be handled by periodic delivery jobs.
3 Unless, of course, the channel is
marked
|
Previous | Next | Contents | Index |