Condividi tramite


Batch di messaggi transazionali

Alcuni adattatori devono coordinare una transazione esterna con una transazione BizTalk Server interna. Ad esempio, l'adattatore SQL fornito con BizTalk Server deve coordinare una transazione SQL Server con una transazione BizTalk Server. A tale scopo, l'adapter deve accedere all'oggetto transazione BizTalk Server. Un oggetto transazione viene creato in modo esplicito e associato al batch prima che il batch venga inviato a BizTalk Server. Un batch al quale è associato un oggetto transazione viene definito batch transazionale. Fornendo il proprio oggetto transazionale Microsoft Distributed Transaction Coordinator (MSDTC), è possibile ottenere il valore "garantito, una volta e una sola volta", il recapito dei dati in e fuori BizTalk Server.

Gli adapter di database transazionali, come l'adapter SQL, sono soggetti a deadlock nel database esterno a causa del fatto che per il batch viene utilizzata una transazione singola. È questa la motivazione per cui la dimensione del batch per l'adapter SQL è hardcoded su uno.

Se l'adapter ha la necessità di integrare nell'ambito della transazione altri gestori delle risorse, ad esempio un altro database o MSMQ, dovrà crearlo e passare al motore di messaggistica una transazione esterna esplicita. Creando una transazione esterna e associandola a un batch si ottiene un batch transazionale. Gli adapter transazionali utilizzano i batch transazionali creando esplicitamente una transazione MSDTC (Microsoft Distributed Transaction Coordinator).

Uno dei motivi per cui un adattatore fornisce BizTalk Server con una transazione consiste nel garantire che BizTalk Server o il sistema esterno abbia un record dei dati. Tale record assicura che il messaggio venga consegnato una e una sola volta.

Nota

Per altre informazioni su MSDTC, vedere Distributed Transaction Coordinator.

L'adapter per i file è un esempio di adapter che non necessita di accedere alla transazione, in quanto le operazioni dei file esterni che gestisce non sono transazionali. In questo caso, l'adattatore non fornisce un oggetto transazione a BizTalk Server. L'adattatore SQL, invece, interagisce con un database SQL e può avere operazioni aggiuntive al di fuori delle relative interazioni con i messaggi di BizTalk Server. In questo caso, una transazione MSDTC esterna può essere utile per passare l'adattatore a BizTalk Server.

Contenuto della sezione