Megosztás a következőn keresztül:


Állandó Client-Side hibák

Bizonyos esetekben Message Queuing áthelyezhet egy üzenetet a célsorba. Ha például az üzenetsor-hozzáférés-vezérlők nem teszik lehetővé az üzenet áthelyezését az ügyfélről a kiszolgálóra, a rendszer áthelyezi a jogsértő üzenetet az ügyféloldali kézbesítetlen levelek üzenetsorába. Ha ez történik, a COM+ várólistára helyezett összetevők szolgáltatása lehetővé teszi, hogy egy kivételosztály társítva legyen egy összetevővel. A kivételosztály összetevőhöz való társításához használja a Speciális lapot a Komponensszolgáltatások felügyeleti eszköz összetevőtulajdonságok lapján. A kivételosztályt programozott módon is társíthatja a COM+ felügyeleti függvényEk ExceptionClass katalógusösszetevő attribútumával.

A kivételosztály az IPlaybackControlimplementáló összetevő ProgID vagy CLSID azonosítójaként van definiálva. A várólistára helyezett összetevők szolgáltatása rendelkezik egy üzenetsor-figyelővel, amely megvizsgálja a Xact holtbetűs üzenetsort. Ha üzenet jelenik meg az üzenetsoron, a kézbesítetlen levelek üzenetsor-figyelője példányosítja a célösszetevőhöz társított kivételkezelőt, és meghívja IPlaybackControl::FinalClientRetry, jelezve, hogy ügyféloldali, helyreállíthatatlan hiba történt.

Az IPlaybackControlmellett a kivételkezelőnek ugyanazokat a adaptereket kell implementálnia, mint a kiszolgáló összetevőjének, amelyhez a kivételeket kezeli. Ha IPlaybackControl::FinalClientRetry hívása történik, a várólistán lévő összetevők futásideje visszajátssza a sikertelen üzenetet a kivételkezelőnek. Ez lehetővé teszi, hogy a kivételkezelő alternatív viselkedést implementáljon a kiszolgálóra nem áthelyezhető üzenetek esetében– például kompenzáló tranzakció létrehozásával.

Ha a kivételkezelő befejezi az összes visszajátszott metódushívást, az üzenet el lesz távolítva az Xact holtbetűs üzenetsorából, és a rendszer elutasítja. Ha azonban a kivételkezelő megszakítja az üzenetet az egyik metódushívás meghibásodási állapotának visszaadásával, az üzenet visszakerül a Xact halott levél üzenetsorába. Az alábbi eseménysorozat az ügyféloldali kivételek kezelését mutatja be:

  1. A Message Queuing nem tud üzenetet kézbesíteni a kiszolgálónak, és az üzenetet a Xact holtbetűs üzenetsorba helyezi.
  2. A halott levél üzenetsor-figyelője (DLQL) egy üzenetet talál a Xact halott levél üzenetsorán.
  3. A DLQL lekéri a célösszetevő CLSID-jét az üzenetből, és egy kivételosztályt keres.
  4. A DLQL példányosítja a kivételosztályt.
  5. A DLQL lekérdezi IPlaybackControl a kivételosztályhoz.
  6. A DLQL meghívja a IPlaybackControl::FinalClientRetry metódust a kivételosztályban.
  7. A DLQL visszajátssza az üzenet összes tulajdonság- és metódushívását a kivételosztályba.
  8. A DLQL törli az üzenetet, ha a kivételkezelő sikeresen befejezi a tranzakciót. A kivételkezelő IObjectContext::SetAborthibát okozhat, és az üzenet a kézbesítetlen levelek várólistáján marad.

Ha az előző lépések bármelyike sikertelen, az üzenet a Xact holtbetűs üzenetsorán marad.

Első lépésként a DLQL beolvassa az üzeneteket a Message Queuing tranzakciós holtbetűs üzenetsorán, és példányosítja az egyes üzenetsor-összetevők kivételosztályát. Miután átjutott az üzenetsoron, az új üzenetekre vár. Ezután feldolgozza az új kézbesítetlen levelek üzenetsor-üzeneteit, amint megérkezik.

Ha be kell avatkoznia az itt leírt folyamatba, vagy ha egy méregüzenetet kell áthelyeznie a végső resting-üzenetsorból, használja az üzenetátvevő segédprogramot. További információ az üzenetátvevő segédprogramról: Hibák kezelése.

Client-Side hibák

Server-Side hibák