Functions in Queued Components in the abnormal handling of server-side playback errors and client-side failures of the Message Queuing delivery mechanism.
For a list of all members of this type, see IPlaybackControl Members.
[Visual Basic] <Guid("51372AFD-CAE7-11CF-BE81-00AA00A2FA25")> <InterfaceType(ComInterfaceType.InterfaceIsIUnknown)> Public Interface IPlaybackControl [C#] [Guid("51372AFD-CAE7-11CF-BE81-00AA00A2FA25")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] public interface IPlaybackControl [C++] [Guid("51372AFD-CAE7-11CF-BE81-00AA00A2FA25")] [InterfaceType(ComInterfaceType::InterfaceIsIUnknown)] public __gc __interface IPlaybackControl [JScript] public Guid("51372AFD-CAE7-11CF-BE81-00AA00A2FA25") InterfaceType(ComInterfaceType.InterfaceIsIUnknown) interface IPlaybackControl
The exception class defined for the component in the COM+ Catalog implements both IPlaybackControl and the interface for the original class. The method implementations of the original class interface are used to perform the exception handling for the failed methods in the class itself. They will be called after FinalClientRetry or FinalServerRetry to process exceptions for the method originally called.
The Queued Components Player calls the methods of IPlaybackControl to inform the exception-handler object that a message is about to be placed on the final resting or dead letter queue. The Queued Components Player then calls the same method in the exception-handler object that had failed in the original method call. The exception-handler object can implement an alternative, for example, by gathering problem diagnosis information or generating an object or message that informs the client of the problem. If the application does not implement IPlaybackControl, the poison message is placed on the final resting or dead letter queue when the Queued Components Player exhausts all retries.
A poison message is a message that cannot be processed for some reason, perhaps because of a problem with the server or queuing system. The transaction is rolled back, and the poison message goes to the top of the queue. When the message is dequeued again, the same condition occurs. This message can continue looping indefinitely until something is done to correct the problem. The Queued Components service handles the poison message by using a series of retries. After several unsuccessful retries, the message is moved to a final resting queue. Poison messages remain in the resting queue until manually moved by using the queued components Message Mover utility.
The poison message situation can also be resolved programmatically, using the System.EnterpriseServices.FinalServerRetry method, which informs the server-side component author that all attempts to play back the deferred activation have failed.
If you discover a poison message, you might be able to solve the underlying cause of the problem quickly. For example, if the server was offline for some reason, you can bring the server back online. If you cannot solve the problem quickly, you can automatically generate another transaction that notifies the requestor that the transaction did not occur. The requestor can then make a compensating transaction that reverses the effect of a transaction that has already committed.
Platforms: Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family
Assembly: System.Enterpriseservices (in System.Enterpriseservices.dll)