Различия в возможностях очередей в Windows Vista, Windows Server 2003 и Windows XPDifferences in Queuing Features in Windows Vista, Windows Server 2003, and Windows XP

В этом разделе перечислены различия в очередях Windows Communication Foundation (WCF) между Windows Vista, Windows Server 2003 и Windows XP.This topic summarizes the differences in the Windows Communication Foundation (WCF) queues feature between Windows Vista, Windows Server 2003, and Windows XP.

Очередь недоставленных сообщений, связанная с приложениемApplication-Specific Dead-Letter Queue

Сообщения могут бесконечно долго оставаться в очереди, если принимающее приложение не считывает их из очереди за отведенное время.Queued messages can remain in the queue indefinitely if the receiving application does not read them in a timely fashion. Такое поведение не рекомендуется для чувствительных ко времени сообщений.This behavior is not advisable if the messages are time-sensitive. Сообщения, чувствительные ко времени, имеют свойство TimeToLive, заданное в привязке с очередью.Time-sensitive messages have a TimeToLive property set in the queued binding. Это свойство указывает максимальный срок нахождения сообщений в очереди.This property indicates how long the messages can be in the queue before they expire. Просроченные сообщения отправляются в специальную очередь, называемую очередью недоставленных сообщений.Expired messages are sent to a special queue called the dead-letter queue. Сообщение также может быть помещено в очередь недоставленных сообщений и по другим причинам, таким как превышение квоты очереди или сбой проверки подлинности.A message can also end up in a dead-letter queue for other reasons, such as exceeding a queue quota or experiencing an authentication failure.

Как правило, единая общесистемная очередь недоставленных сообщений распространяется на все приложения с очередями, имеющие совместный доступ к диспетчеру очередей.Typically, a single system-wide dead-letter queue exists for all queued applications that share a queue manager. Очередь недоставленных сообщений для каждого приложения обеспечивает более эффективную изоляцию между приложениями с очередями с совместным доступом к диспетчеру очередей, позволяя этим приложениям определять собственную очередь недоставленных сообщений, связанную с приложением.A dead-letter queue for each application enables better isolation between queued applications that share a queue manager by allowing these applications to specify their own application-specific dead-letter queue. Приложение с совместным с другими приложениями доступом к очереди недоставленных сообщений должно просмотреть очередь, чтобы найти сообщения, относящиеся именно к нему.An application that shares a dead-letter queue with other applications has to browse the queue to find messages that are applicable to it. Благодаря очереди недоставленных приложений, относящейся к приложению, оно располагает точной информацией, что все сообщения в очереди недоставленных сообщений применимы именно к нему.With an application-specific dead-letter queue, the application can be assured that all messages in its dead-letter queue are applicable to it.

Windows Vista предоставляет очереди недоставленных сообщений для конкретных приложений.Windows Vista provides for application-specific dead-letter queues. Очереди недоставленных сообщений, относящиеся к приложениям, недоступны в Windows Server 2003 и Windows XP, а приложения должны использовать очередь недоставленных сообщений на уровне системы.Application-specific dead-letter queues are not available in Windows Server 2003 and Windows XP, and applications must use the system-wide dead-letter queue.

Обработка подозрительных сообщенийPoison-Message Handling

Подозрительное сообщение представляет собой сообщение, для которого превышено максимальное количество попыток доставки в принимающее приложение.A poison message is a message that has exceeded the maximum number of delivery attempts to the receiving application. Такая ситуация может возникнуть, когда приложение, считывающее сообщение из транзакционной очереди, не может сразу обработать сообщение из-за ошибок.This situation can arise when an application that reads a message from a transactional queue cannot process the message immediately because of errors. Если приложение отменяет транзакцию, при которой было получено сообщение из очереди, оно возвращает сообщение обратно в очередь.If the application aborts the transaction in which the queued message was received, it returns the message to the queue. После этого приложение пытается повторно извлечь сообщение в новой транзакции.The application then tries to retrieve the message again in a new transaction. Если причина ошибки не устранена, принимающее приложение может зациклиться, получая и прерывая прием одного и того же сообщения, до достижения максимального числа попыток доставки и пометки сообщения как подозрительного.If the problem that causes the error is not corrected, the receiving application can get stuck in a loop receiving and aborting the same message until it exceeds the maximum number of delivery attempts, and a poison message results.

Основные различия между очередью сообщений (MSMQ) в Windows Vista, Windows Server 2003 и Windows XP, относящиеся к устранению подозрительных ситуаций, включают следующее:The key differences between Message Queuing (MSMQ) on Windows Vista, Windows Server 2003, and Windows XP that are relevant to poison handling include the following:

  • MSMQ в Windows Vista поддерживает подочереди, в то время как Windows Server 2003 и Windows XP не поддерживают подочереди.MSMQ in Windows Vista supports subqueues, while Windows Server 2003 and Windows XP do not support subqueues. Вложенные очереди используются при обработке подозрительных сообщений.Subqueues are used in poison-message handling. Очереди повторных попыток и очередь подозрительных сообщений являются вложенными очередями очереди приложения, созданной на основе параметров обработки подозрительных сообщений.The retry queues and the poison queue are subqueues to the application queue that is created based on the poison-message handling settings. Значение MaxRetryCycles указывает, сколько необходимо создать вложенных очередей повторных попыток.The MaxRetryCycles dictates how many retry subqueues to create. Поэтому при работе в Windows Server 2003 или Windows XP MaxRetryCycles они игнорируются и ReceiveErrorHandling.Move не разрешаются.Therefore, when running on Windows Server 2003 or Windows XP, MaxRetryCycles are ignored and ReceiveErrorHandling.Move is not allowed.

  • MSMQ в Windows Vista поддерживает негативное подтверждение, в то время как в Windows Server 2003 и Windows XP это не так.MSMQ in Windows Vista supports negative acknowledgment, while Windows Server 2003 and Windows XP do not. Уведомление о недоставке от диспетчера принимающей очереди приводит к тому, что диспетчер передающей очереди помещает сообщение в очередь недоставленных сообщений.A negative acknowledgment from the receiving queue manager causes the sending queue manager to place the rejected message in the dead-letter queue. ReceiveErrorHandling.RejectЭто не допускается в Windows Server 2003 и Windows XP.As such, ReceiveErrorHandling.Reject is not allowed with Windows Server 2003 and Windows XP.

  • MSMQ в Windows Vista поддерживает свойство Message, которое хранит количество попыток доставки сообщений.MSMQ in Windows Vista supports a message property that keeps count of the number of times message delivery is attempted. Это свойство счетчика прерываний недоступно в Windows Server 2003 и Windows XP.This abort count property is not available on Windows Server 2003 and Windows XP. WCF поддерживает счетчик прерываний в памяти, поэтому возможно, что это свойство не может содержать точное значение, если одно и то же сообщение считывается несколькими службами WCF в веб-ферме.WCF maintains the abort count in memory, so it is possible that this property may not contain an accurate value when the same message is read by more than one WCF service in a Web farm.

Удаленное чтение в транзакцияхRemote Transactional Read

MSMQ в Windows Vista поддерживает удаленные транзакционные операции чтения.MSMQ on Windows Vista supports remote transactional reads. Это позволяет приложению, считывающему из очереди, находиться на компьютере, отличном от компьютера, на котором размещена очередь.This allows an application that is reading from a queue to be hosted on a computer that is different from the computer on which the queue is hosted. Этим обеспечивается возможность использования фермы служб, осуществляющих чтение из центральной очереди, что увеличивает общую производительность системы.This ensures the ability to have a farm of services reading from a central queue, which increases the overall throughput of the system. Кроме того, если во время чтения и обработки сообщения возникает ошибка, такой подход позволяет откатить транзакцию, и сообщение останется в очереди для последующей обработки.It also ensures that if a failure occurs when reading and processing the message, the transaction rolls back and the message remains in the queue for later processing.

См. такжеSee also