Understanding Priority Queuing
Applies to: Exchange Server 2010
Priority queuing is a feature of Microsoft Exchange Server 2010 that enables the sender-defined priority of a message to influence the processing of the message by a server running Exchange that has the Hub Transport server role installed.
The message priority is assigned by the sender in Microsoft Outlook when the sender creates and sends the message. The sender can set any of the following message priority values in Outlook:
- Low importance
- Normal importance
- High importance
The default priority for a message created in Outlook or Microsoft Office Outlook Web App is Normal priority. The message priority is stored in the X-Priority
header field in the message header.
Every message sent or received in an Exchange 2010 organization must be categorized on a Hub Transport server before it can be routed and delivered. The categorizer on a Hub Transport server picks up one message at a time from the Submission queue and performs recipient resolution, routing resolution, and content conversion on the message before putting the message in a delivery queue. For more information, see Understanding Transport Pipeline.
Delivery queues are dynamically created based on the destination of a message. Mailbox delivery queues are created for messages destined for Mailbox servers that exist in the same Active Directory site as the Hub Transport server. Remote delivery queues are created for messages destined for Mailbox servers that exist in a different Active Directory site than the Hub Transport server, and for remote domains. For more information, see Understanding Transport Queues.
All messages that have the same destination are put in the same delivery queue. Priority queuing affects the transmission of messages from a delivery queue to the destination messaging server. When priority queuing is enabled, High priority messages are transmitted to their destinations before Normal priority messages, and Normal priority messages are transmitted to their destinations before Low priority messages. The prioritized delivery of messages based on the message priority can help you define specific service level agreement (SLA) requirements for message delivery times.
Options for Configuring Priority Queuing
All configuration options for priority queuing are available in the EdgeTransport.exe.config application configuration file located in the C:\Program Files\Microsoft\Exchange Server\Bin directory. For more information about the EdgeTransport.exe.config file, see Understanding the EdgeTransport.exe.Config File. Many configuration options available are unrelated to priority queuing. Any configuration options that don't involve back pressure are outside the scope of this topic.
Enabling or Disabling Priority Queuing
The PriorityQueuingEnable parameter enables or disables priority queuing on a Hub Transport server. The default value is False
. To enable priority queuing, set the PriorityQueuingEnable parameter value to True
in the EdgeTransport.exe.config file and restart the Microsoft Exchange Transport service.
Configuring the Maximum Size of a High Priority Message
The MaxHighPriorityMessageSize parameter controls the maximum allowed size of a High priority message. The default value is 250 kilobytes (KB). If a High priority message is larger than the value of the MaxHighPriorityMessageSize parameter, the message is automatically downgraded from High priority to Normal priority.
When you enter a value, qualify the value with one of the following units:
- KB (kilobytes)
- MB (megabytes)
- GB (gigabytes)
The value of the MaxHighPriorityMessageSize parameter should be significantly less than the value of the MaxMessageSize parameter on the Set-TransportConfig cmdlet. The default value of the MaxMessageSize parameter is 10 MB. A smaller value in the MaxHighPriorityMessageSize parameter helps ensure consistent and predictable delivery times for High priority messages.
Configuring the Delay Notification Time-Out Based on the Message Priority
After each message delivery failure, the Hub Transport server generates a delay delivery status notification (DSN) message and queues it for delivery to the sender of the undeliverable message. This delay DSN message is sent only after a specified delay notification time-out interval, and only if the failed message wasn't successfully delivered during that time. This delay prevents the sending of unnecessary delay DSN messages that may be caused by temporary message transmission failures.
The following table shows the delay DSN notification time-out options based on the message priority.
Delay DSN notification time-out options based on the message priority
Parameter name | Default value |
---|---|
LowPriorityDelayNotificationTimeout |
8:00:00 (8 hours) |
NormalPriorityDelayNotificationTimeout |
4:00:00 (4 hours) |
HighPriorityDelayNotificationTimeout |
00:30:00 (30 minutes) |
To specify a value for a delay notification time-out, enter the value as a time span: dd.hh:mm:ss, where d = days, h = hours, m = minutes, and s = seconds. If the value is less than 1 day, you can omit the day part of the time span.
Configuring the Message Expiration Time-Out Based on the Message Priority
The message expiration time-out specifies the maximum length of time that a Hub Transport server tries to deliver a failed message. If the message can't be successfully delivered before the expiration time-out interval has passed, a non-delivery report (NDR) that contains the original message or the message headers is delivered to the sender.
The following table shows the message expiration time-out options based on the message priority.
Message expiration time-out options based on the message priority
Parameter name | Default value |
---|---|
LowPriorityMessageExpirationTimeout |
2.00:00:00 (2 days) |
NormalPriorityMessageExpirationTimeout |
2.00:00:00 (2 days) |
HighPriorityMessageExpirationTimeout |
8:00:00 (8 hours) |
To specify a value for a message expiration time-out, enter the value as a time span: dd.hh:mm:ss, where d = days, h = hours, m = minutes, and s = seconds. If the value is less than 1 day, you can omit the day part of the time span.
Configuring the Maximum Number of Connections Per Domain Based on the Message Priority
The maximum number of connections per domain specifies the maximum number of connections that a Hub Transport server can have open to any single remote domain. The outgoing connections to remote domains occur by using the remote delivery queues and Send connectors that exist on the Hub Transport server.
The following table shows the maximum number of connections per domain options based on the message priority.
Maximum number of connections per domain options based on the message priority
Parameter name | Default value |
---|---|
MaxPerDomainLowPriorityConnections |
2 |
MaxPerDomainNormalPriorityConnections |
15 |
MaxPerDomainHighPriorityConnections |
3 |
The sum of the MaxPerDomainLowPriorityConnections parameter, the MaxPerDomainNormalPriorityConnections parameter, and the MaxPerDomainNormalPriorityConnections parameter should be less than or equal to the value of the MaxPerDomainOutboundConnections parameter on the Set-TransportServer cmdlet. The default value of the MaxPerDomainOutboundConnections parameter is 20
.
How Priority Queuing Affects Other Message Limits on Hub Transport Servers
All messages that pass through a Hub Transport server are subject to a variety of message retry, resubmit, and expiration limits. For more information, see Understanding Transport Queues.
Some message limits available in the Set-TransportServer cmdlet have corresponding priority queuing message limits available in the EdgeTransport.exe.config configuration file. The following table shows these corresponding message limits.
Message limits in the Set-TransportServer cmdlet that correspond to priority queuing message limits in the EdgeTransport.exe.config configuration file
Source | Parameter | Default value |
---|---|---|
Set-TransportServer |
DelayNotificationTimeOut |
4:00:00 (4 hours) |
EdgeTransport.exe.config |
NormalPriorityDelayNotificationTimeout |
4:00:00 (4 hours) |
Set-TransportServer |
MessageExpirationTimeOut |
2.00:00:00 (2 days) |
EdgeTransport.exe.config |
NormalPriorityMessageExpirationTimeout |
2.00:00:00 (2 days) |
When priority queuing is disabled, all the priority queuing message limits that exist in the EdgeTransport.exe.config configuration file are ignored. All the message limits on the Set-TransportServer cmdlet apply to all messages that travel through the Hub Transport server.
When priority queuing is enabled, the priority queuing message limits in the EdgeTransport.exe.config configuration file override the corresponding message limits in the Set-TransportServer cmdlet. All other message limits in the Set-TransportServer cmdlet still apply to Low priority, Normal priority, and High priority messages that travel through the Hub Transport server.
User Settings for Priority Queuing
The Set-Mailbox cmdlet in the Exchange Management Shell has the DowngradeHighPriorityMessagesEnabled parameter. The default value is False
. When this parameter is set to True
, any High priority messages sent from the mailbox are automatically downgraded to Normal priority. For more information, see Set-Mailbox.