Condividi tramite


Esecuzione del campione di gestore eccezioni personalizzato per persistenza del messaggio

L'esempio Message Persisting Custom Exception Handler illustra un gestore generico ad accoppiamento libero che riceve messaggi di errore, estrae i messaggi Microsoft BizTalk che contengono e li scrive come file su disco nel file system.

L'esempio illustra come usare un gestore di eccezioni personalizzato in un'orchestrazione. Quando un processo nell'orchestrazione (EAIProcess.odx) rileva un errore, il gestore eccezioni genera e pubblica un messaggio di errore ESB. Questo messaggio di errore include nel payload i messaggi (incluse le relative proprietà di contesto correlate a BizTalk) che erano "in anteprima" quando si è verificata l'eccezione, nonché l'istanza system.Exception corrente intercettata dal motore di orchestrazione BizTalk. In questo caso, un messaggio "Negato" e un messaggio "Approvato" vengono salvati in modo permanente con il messaggio di errore.

Una seconda orchestrazione denominata EAIGenericHandler.odx, distribuita in modo disaccoppiato e funge da gestore eccezioni personalizzato, sottoscrive il codice di errore specifico generato nell'orchestrazione EAIGenericHandler.odx e utilizza il messaggio di errore. Questo gestore eccezioni estrae i messaggi originali (come documenti senza tipo) e le istanze System.Exception originariamente rese persistenti nel messaggio di errore.

L'esempio Message Persisting Custom Exception Handler è diverso dall'esempio Repair and Resubmit Custom Exception Handler in quanto l'orchestrazione EAIGenericHandler.odx usata in questo esempio non ha una dipendenza dagli schemi usati nel processo di orchestrazione della pubblicazione degli errori (EAIProcess.odx). In particolare, l'orchestrazione EAIGenericHandler.odx recupera i messaggi originali dal messaggio di errore come System.Xml. Istanze di XmlDocument anziché messaggi tipizzati in base agli schemi usati nell'orchestrazione EAIProcess.odx. Restituisce anche i messaggi come raccolta che il codice può enumerare facilmente.

Il gestore eccezioni personalizzato (EAIGenericHandler.odx) scrive quindi i messaggi "Negati" e "Approvati" nel percorso del file system \Source\Samples\Exception Handling\Test\Filedrop\EAIGenericHandler.PostTmpMsg.

È inoltre disponibile una porta di trasmissione generica denominata ALL. Exceptions_FILE configurata per l'uso della pipeline GlobalFaultProcessor installata come parte di Microsoft BizTalk ESB Toolkit Exception Management Framework. Questa porta sottoscrive tutte le eccezioni nel sistema, sia i messaggi di routing dei messaggi bizTalk che i messaggi di errore ESB. Exception Management Framework li normalizza tutti in un unico formato e li serializza usando un'istruzione di elaborazione di Microsoft InfoPath nel percorso \Source\Samples\Exception Handling\Test\Filedrop\All_Exceptions.

Installazione

Tutti gli esempi di gestione delle eccezioni usano lo stesso set di servizi di base e gli artefatti dell'applicazione BizTalk. Pertanto, è necessario installare gli artefatti di esempio di gestione delle eccezioni solo una volta per poter eseguire tutti gli esempi di gestione delle eccezioni. Per informazioni su come installare gli esempi di gestione delle eccezioni, vedere Installazione degli esempi di gestione delle eccezioni.

Esecuzione dell'applicazione di esempio

Per eseguire l'esempio di gestore eccezioni personalizzato per la persistenza del messaggio

  1. Prima di eseguire questo esempio per la prima volta, assicurarsi che il percorso di ricezione e l'URL della porta di trasmissione puntino alle directory appropriate nella cartella \Source\Samples\Exception Handling\Test\Filedrop. Il percorso di ricezione deve specificare la cartella EAIProcess.RequestPort e l'URL della porta di trasmissione deve specificare la cartella EAIGenericHandler.PostTmpMsg.

  2. Se l'applicazione GlobalBank.ESB non è già in esecuzione, usare la Console di amministrazione BizTalk per avviarla.

  3. Avviare l'esempio copiando il file di esempio denominato Request_EAIGenericHandler.xml, che si trova nella cartella \Source\Samples\Exception Handling\Test\Data, nella cartella specificata per il percorso di ricezione EAIProcess.RequestPort_FILE: \Source\Samples\Exception Handling\Test\Filedrop\EAIProcess.RequestPort.

  4. Aprire la cartella denominata EAIGenericHandler.PostTmpMsg (nella cartella \Source\Samples\Exception Handling\Test\Filedrop\). Verrà visualizzato il messaggio originale.

Funzionamento dell'esempio

Il messaggio inviato attiva l'orchestrazione EAIProcess. Quando l'orchestrazione EAIProcess elabora il messaggio, tenta di dividere 1 per il prezzo unitario. Poiché il prezzo unitario è zero, si verifica un'eccezione di divisione per zero. Il codice nel gestore eventi dell'orchestrazione rileva questa eccezione e crea un messaggio di errore. La quantità di ordine nel messaggio è minore di 10, quindi la logica di business determina che questa eccezione ha un valore di campo FaultCode pari a 2000.

L'orchestrazione EAIProcess pubblica quindi il messaggio di errore nella finestra di messaggio BizTalk tramite una porta associata diretta e termina l'orchestrazione.

Un'orchestrazione personalizzata del gestore di errore denominata EAIGenericHandler, che sottoscrive i messaggi con un valore di campo FaultCodepari a 2000, preleva il nuovo messaggio di errore. Il codice nell'orchestrazione estrae tutti i messaggi dal messaggio di eccezione (errore) e li scrive nei file su disco.