Unterschiede zwischen den Warteschlangenfunktionen in Windows Vista, Windows Server 2003 und Windows XPDifferences in Queuing Features in Windows Vista, Windows Server 2003, and Windows XP

In diesem Thema werden die Unterschiede in der Windows Communication Foundation (WCF)-Warteschlangenfunktion zwischen zusammengefasst Windows VistaWindows Vista, Windows Server 2003Windows Server 2003, und Windows XPWindows XP.This topic summarizes the differences in the Windows Communication Foundation (WCF) queues feature between Windows VistaWindows Vista, Windows Server 2003Windows Server 2003, and Windows XPWindows XP.

Anwendungsspezifische Warteschlange für unzustellbare NachrichtenApplication-Specific Dead-Letter Queue

In der Warteschlange stehende Nachrichten können eine unbegrenzte Zeit hinweg in der Warteschlange verbleiben, wenn die empfangende Anwendung sie nicht umgehend aus der Warteschlange liest.Queued messages can remain in the queue indefinitely if the receiving application does not read them in a timely fashion. Dieses Verhalten ist bei zeitempfindlichen Nachrichten möglicherweise nicht empfehlenswert.This behavior is not advisable if the messages are time-sensitive. Für zeitempfindliche Nachrichten ist in der Bindung, die sich in der Warteschlange befindet, eine TimeToLive-Eigenschaft festgelegt.Time-sensitive messages have a TimeToLive property set in the queued binding. Diese Eigenschaft gibt an, wie lang die Nachrichten in der Warteschlange sein können, bevor sie ablaufen.This property indicates how long the messages can be in the queue before they expire. Abgelaufene Nachrichten werden an eine spezielle Warteschlange gesendet und zwar an die Warteschlange für unzustellbare Nachrichten.Expired messages are sent to a special queue called the dead-letter queue. Nachrichten können auch aus anderen Gründen in eine Warteschlange für unzustellbare Meldungen verschoben werden, z. B. aufgrund des Überschreitens eines Warteschlangenkontingents oder wegen eines Authentifizierungsfehlers.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.

In der Regel gibt es eine systemweite Warteschlange für nicht zustellbare Nachrichten für alle Anwendungen, die denselben Warteschlangen-Manager verwenden.Typically, a single system-wide dead-letter queue exists for all queued applications that share a queue manager. Eine Warteschlange für nicht zustellbare Nachrichten für jede einzelne Anwendung ermöglicht eine bessere Isolation zwischen den Anwendungen, die mit Warteschlangen arbeiten und denselben Warteschlangen-Manager verwenden. Dabei können für die Anwendungen eigene, anwendungsspezifische Warteschlangen für nicht zustellbare Nachrichten angegeben werden.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. Eine Anwendung, die eine Warteschlange für unzustellbare Nachrichten gemeinsam mit anderen Anwendungen nutzt, muss die Wartschlangen nach den Nachrichten durchsuchen, die für sie bestimmt sind.An application that shares a dead-letter queue with other applications has to browse the queue to find messages that are applicable to it. Bei einer anwendungsspezifischen Warteschlange für unzustellbare Nachrichten ist sichergestellt, dass alle Nachrichten in der Warteschlange diese Anwendung betreffen.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 VistaWindows Vista unterstützt anwendungsspezifische Warteschlangen für unzustellbare Nachrichten. provides for application-specific dead-letter queues. Anwendungsspezifische Warteschlangen für unzustellbare Nachrichten sind in Windows Server 2003Windows Server 2003 und Windows XPWindows XP nicht verfügbar. Anwendungen müssen hier die systemweite Warteschlange für unzustellbare Nachrichten verwenden.Application-specific dead-letter queues are not available in Windows Server 2003Windows Server 2003 and Windows XPWindows XP, and applications must use the system-wide dead-letter queue.

Behandlung nicht verarbeitbarer NachrichtenPoison-Message Handling

Eine nicht verarbeitbare Nachricht ist eine Nachricht, die auch nach der maximalen Anzahl von Zustellversuchen nicht an die empfangende Anwendung übermittelt werden konnte.A poison message is a message that has exceeded the maximum number of delivery attempts to the receiving application. Diese Situation kann auftreten, wenn eine Anwendung, die Nachrichten aus einer Transaktionswarteschlange liest, die Nachricht aufgrund von Fehlern nicht sofort verarbeiten kann.This situation can arise when an application that reads a message from a transactional queue cannot process the message immediately because of errors. Wenn die Anwendung die Transaktion abbricht, in der die in der Warteschlange stehende Nachricht empfangen wurde, wird die Nachricht an die Warteschlange zurückgegeben.If the application aborts the transaction in which the queued message was received, it returns the message to the queue. Die Anwendung versucht dann, die Nachricht in einer neuen Transaktion abzurufen.The application then tries to retrieve the message again in a new transaction. Wenn das Problem, das den Fehler verursacht, nicht korrigiert wird, kann die empfangende Anwendung in einer Schleife hängen bleiben, in der sie dieselbe Nachricht immer wieder empfängt und abbricht, bis die maximale Anzahl der Zustellungsversuche überschritten wird, und so entsteht eine nicht verarbeitbare Nachricht.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.

Die folgenden Hauptunterschiede zwischen dem Message Queuing (MSMQ) in Windows VistaWindows Vista, Windows Server 2003Windows Server 2003 und Windows XPWindows XP sind für die Behandlung nicht verarbeitbarer Nachrichten relevant:The key differences between Message Queuing (MSMQ) on Windows VistaWindows Vista, Windows Server 2003Windows Server 2003, and Windows XPWindows XP that are relevant to poison handling include the following:

  • MSMQ unter Windows VistaWindows Vista unterstützt untergeordnete Warteschlangen, während Windows Server 2003Windows Server 2003 und Windows XPWindows XP keine untergeordneten Warteschlangen unterstützen.MSMQ in Windows VistaWindows Vista supports subqueues, while Windows Server 2003Windows Server 2003 and Windows XPWindows XP do not support subqueues. Untergeordnete Warteschlangen werden zur Behandlung nicht verarbeitbarer Nachrichten verwendet.Subqueues are used in poison-message handling. Die Wiederholungswarteschlangen und die Warteschlange für potenziell schädliche Nachrichten sind untergeordnete Warteschlangen der Anwendungswarteschlange, die basierend auf den Einstellungen für die Behandlung nicht verarbeitbarer Nachrichten erstellt wird.The retry queues and the poison queue are subqueues to the application queue that is created based on the poison-message handling settings. Die Eigenschaft MaxRetryCycles bestimmt, wie viele untergeordnete Wiederholungwarteschlangen erstellt werden sollen.The MaxRetryCycles dictates how many retry subqueues to create. Deshalb werden bei der Ausführung unter Windows Server 2003Windows Server 2003 oder unter Windows XPWindows XP die MaxRetryCycles ignoriert, und ReceiveErrorHandling.Move wird nicht zugelassen.Therefore, when running on Windows Server 2003Windows Server 2003 or Windows XPWindows XP, MaxRetryCycles are ignored and ReceiveErrorHandling.Move is not allowed.

  • MSMQ in Windows VistaWindows Vista unterstützt die negative Bestätigung, Windows Server 2003Windows Server 2003 und Windows XPWindows XP hingegen nicht.MSMQ in Windows VistaWindows Vista supports negative acknowledgment, while Windows Server 2003Windows Server 2003 and Windows XPWindows XP do not. Eine negative Bestätigung vom empfangenden Warteschlangen-Manager bewirkt, dass der sendende Warteschlangen-Manager die abgelehnte Nachricht in die Warteschlange für unzustellbare Nachrichten einstellt.A negative acknowledgment from the receiving queue manager causes the sending queue manager to place the rejected message in the dead-letter queue. Damit ist ReceiveErrorHandling.Reject in Windows Server 2003Windows Server 2003 und Windows XPWindows XP nicht zulässig.As such, ReceiveErrorHandling.Reject is not allowed with Windows Server 2003Windows Server 2003 and Windows XPWindows XP.

  • MSMQ in Windows VistaWindows Vista unterstützt eine Nachrichteneigenschaft, die zählt, wie oft die Nachrichtenzustellung versucht wird.MSMQ in Windows VistaWindows Vista supports a message property that keeps count of the number of times message delivery is attempted. Diese Abbruchanzahleigenschaft ist in Windows Server 2003Windows Server 2003 und Windows XPWindows XP nicht verfügbar.This abort count property is not available on Windows Server 2003Windows Server 2003 and Windows XPWindows XP. WCF verwaltet die abbruchanzahl im Arbeitsspeicher, daher ist es möglich, dass diese Eigenschaft nicht auf einen genauen Wert enthalten kann, wenn dieselbe Nachricht von mehr als ein WCF-Dienst in einer Webfarm gelesen wird.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 transaktional durchgeführte LesevorgängeRemote Transactional Read

MSMQ in Windows VistaWindows Vista unterstützt remote durchgeführte Lesevorgänge.MSMQ on Windows VistaWindows Vista supports remote transactional reads. Dabei kann eine Anwendung, die aus einer Warteschlange liest, auf einem anderen Computer ausgeführt werden als dem Computer, auf dem die Warteschlange gehostet wird.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. Dies ermöglicht, dass eine Dienstefarm aus einer zentralen Warteschlange lesen kann, was den Gesamtdurchsatz im System erhöht.This ensures the ability to have a farm of services reading from a central queue, which increases the overall throughput of the system. Darüber hinaus wird sichergestellt, dass im Fall eines Fehlers während des Lesens oder Verarbeitens einer Nachricht ein Rollback der Transaktion erfolgt und die Nachricht zur späteren Verarbeitung in der Warteschlange verbleibt.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.

Siehe auchSee Also

Verwenden von Warteschlangen für unzustellbare Nachrichten zur Handhabung von NachrichtenübertragungsfehlernUsing Dead-Letter Queues to Handle Message Transfer Failures
Behandlung nicht verarbeitbarer NachrichtenPoison Message Handling