Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In sommige gevallen kan Message Queuing- een bericht naar de doelwachtrij verplaatsen. Als de besturingselementen voor wachtrijtoegang bijvoorbeeld niet toestaan dat het bericht van de client naar de server wordt verplaatst, wordt het offending-bericht verplaatst naar de wachtrij met dode brieven aan de clientzijde. Wanneer dit gebeurt, kan met de COM+-onderdelenservice in de wachtrij een uitzonderingsklasse worden gekoppeld aan een onderdeel. Als u de uitzonderingsklasse aan het onderdeel wilt koppelen, gebruikt u het tabblad Geavanceerd op de pagina met onderdeeleigenschappen van het beheerprogramma Component Services. U kunt de uitzonderingsklasse ook programmatisch koppelen met behulp van het componentkenmerk ExceptionClass-catalogus van de COM+ Administratieve functies.
De uitzonderingsklasse wordt gedefinieerd als de ProgID of de CLSID van een onderdeel dat IPlaybackControl-implementeert. De service voor in wachtrij geplaatste onderdelen heeft een wachtrijmonitor voor dode letters waarmee de wachtrij voor dode letters van Xact wordt gescand. Als er een bericht in de wachtrij staat, instanteert de wachtrijmonitor voor dode letters de uitzonderingshandler die is gekoppeld aan het doelonderdeel en roept deze aan IPlaybackControl::FinalClientRetry-, waarmee wordt aangegeven dat er een onherstelbare fout aan de clientzijde is opgetreden.
Naast IPlaybackControlmoet de uitzonderingshandler dezelfde set interfaces implementeren als het serveronderdeel waarvoor uitzonderingen worden verwerkt. Wanneer IPlaybackControl::FinalClientRetry wordt aangeroepen, wordt de runtime van de onderdelen in de wachtrij het mislukte bericht afgespeeld naar de uitzonderingshandler. Hierdoor kan de uitzonderingshandler een alternatief gedrag implementeren voor berichten die niet naar de server kunnen worden verplaatst, bijvoorbeeld door een compenserende transactie te genereren.
Als de uitzonderingshandler alle methodeaanroepen heeft voltooid die worden afgespeeld, wordt het bericht verwijderd uit de wachtrij voor dode letters van Xact en wordt het verwijderd. Als de uitzonderingshandler het bericht echter afbreekt door een foutstatus van een van de methodeaanroepen te retourneren, wordt het bericht teruggezet naar de wachtrij met dode letters van Xact. De volgende reeks gebeurtenissen laat zien hoe uitzonderingen aan de clientzijde worden verwerkt:
- Message Queuing kan geen bericht bezorgen op de server en plaatst het bericht in de wachtrij voor dode letters van Xact.
- De listener voor wachtrijen voor dode letters (DLQL) vindt een bericht in de wachtrij met dode letters van Xact.
- De DLQL haalt het doelonderdeel CLSID op uit het bericht en controleert op een uitzonderingsklasse.
- De DLQL maakt een instantie van de uitzonderingsklasse.
- De DLQL-query's voor IPlaybackControl- voor de uitzonderingsklasse.
- De DLQL roept de methode IPlaybackControl::FinalClientRetry aan in de uitzonderingsklasse.
- De DLQL speelt alle eigenschaps- en methode-aanroepen van het bericht af naar de uitzonderingsklasse.
- De DLQL verwijdert het bericht als de uitzonderingshandler de transactie heeft voltooid. De uitzonderingshandler kan problemen veroorzaken IObjectContext::SetAborten het bericht blijft in de wachtrij met dode letters staan.
Als een van de voorgaande stappen mislukt, blijft het bericht in de wachtrij voor dode letters van Xact staan.
Wanneer het bestand is gestart, leest de DLQL elk bericht in de wachtrij voor transactionele dead letter van Message Queuing en wordt de uitzonderingsklasse geïnstitueerd voor elk bericht met onderdelen in de wachtrij. Nadat één pass through de wachtrij is geslaagd, wacht deze op nieuwe berichten. Vervolgens wordt elk nieuw wachtrijbericht met dode letters verwerkt zodra het binnenkomt.
Als u moet ingrijpen in het proces dat hier wordt beschreven of als u een gifbericht uit de uiteindelijke rustwachtrij wilt verplaatsen, gebruikt u het hulpprogramma bericht mover. Zie Fouten afhandelenvoor meer informatie over het hulpprogramma voor berichtmover.
Verwante onderwerpen