The SQL Server transport can take advantage of native delayed delivery without the need to run the timeout manager. Instead, the transport creates dedicated infrastructure which delays messages using native SQL Server transport features.
When a message delay time lapses, SQL Server transport moves a batch of messages to the destination queue. Note that this means the exact time of delivering a delayed message is always an approximation.
From version 5 of the transport, native delayed delivery is always enabled.
Configuration
The settings described in this section have default values as shown in the snippets. The settings can be fine-tuned to fit a particular system's needs, e.g. messages are checked for expiration more frequently resulting in more accurate delivery times.
Table suffix
Delayed messages are stored in a dedicated table named endpoint-name.
. The suffix is set to Delayed
by default, but can be overwritten using:
transport.DelayedDelivery.TableSuffix = "Delayed";
Batch size
The SQL Server transport processes delayed messages in batches. Each time the transport queries for messages, it will use the batch size setting to limit the number of messages to be processed. This batch size is set to 100 by default, but can be configured using:
transport.DelayedDelivery.BatchSize = 100;
Backwards compatibility
When upgrading to a version of the transport that supports native delayed delivery, it is safe to run a set of endpoints that include both endpoints using native delayed delivery as well as the timeout manager:
- Endpoints with native delayed delivery can send delayed messages to endpoints using the timeout manager.
- Endpoints with native delayed delivery can continue to receive delayed messages from endpoints using timeout manager.