| 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 |