Transazioni del flusso di messaggi

I flussi di messaggi supportano due stili di transazione:
  1. I Flussi di messaggi coordinati assicurano che tutti gli aggiornamenti delle risorse siano sottoposti a commit o rollback insieme all'interno di una singola transazione.
  2. I Flussi di messaggi non coordinati consentono gli aggiornamenti delle risorse in modo indipendente; gli aggiornamenti non sono influenzati dal generale esito positivo o negativo del flusso.

Flussi di messaggi coordinati

Un flusso di messaggi che include un'interazione con un database esterno o altre risorse recuperabili può essere configurato in modo che la sua elaborazione sia coordinata all'interno di una transazione singola, globale. Questa coordinazione assicura che tutta l'elaborazione venga portata a termine con esito positivo o che non venga portata a termine affatto. La transazione viene sottoposta a commit (se tutta l'elaborazione ha avuto esito positivo) o rollback (se almeno una parte dell'elaborazione ha avuto esito negativo). Questo significa che tutte le risorse interessate (code, database e così via) vengono mantenute in una stato coerente e che l'integrità dei dati è preservata.

Gli aggiornamenti effettuati da un flusso coordinato sono sottoposti a commit quando il flusso completa l'elaborazione del messaggio di input con esito positivo. Gli aggiornamenti sono ripristinati allo stato precedente se:
  1. Un nodo all'interno del flusso genera un'eccezione che non è rilevata da un nodo diverso dal nodo di input e
  2. Il terminale catch del nodo input non è connesso.

Per configurare un flusso di messaggi come coordinato, impostare la proprietà Coordinato nel flusso di messaggi.

Per alcuni nodi di input, quali MQInput o i nodi SCADA, è possibile impostare la proprietà Modalità transazione sui nodi nel flusso su Automatico; questo significa che i messaggi faranno parte della transazione globale e che il flusso sarà contrassegnato come transazionale se il messaggio di input è permanente e come non coordinato se il messaggio di input non è permanente. I nodi successivi nel flusso che impostano la proprietà della modalità transazione su Automatico sono inclusi nella transazione globale se il flusso è stato contrassegnato come transazionale dal nodo di input.

La coordinazione delle transazioni dei flussi di messaggi è fornita sulle piattaforme distribuite da WebSphere MQ e sui sistemi z/OS da RRS. I flussi di messaggi sono sempre coordinati a livello globale su z/OS, indipendentemente dal fatto che la proprietà Coordinato del flusso di messaggi sia specificata o meno.

Flussi di messaggi non coordinati

I flussi non coordinati sono flussi per i quali non è impostata la proprietà Coordinato. Gli aggiornamenti delle risorse utilizzate dal flusso non coordinato sono gestiti da programmi di gestione risorse separati. Alcuni programmi di gestione risorse, come WebSphere MQSeries, consentono di eseguire gli aggiornamenti in modo non transazionale o come parte di una transazione specifica delle risorse. Altri programmi di gestione risorse, come i gestori database, utilizzano sempre una transazione specifica delle risorse. Una transazione specifica delle risorse è una transazione il cui ambito è limitato alle risorse che appartengono a un singolo programma di gestione risorse, come un gestore database o un gestore code.

Le transazioni specifiche delle risorse sono utilizzate, in genere, solo quando esiste un unico tipo di risorsa recuperabile in un flusso. (Un esempio di tale flusso è quello che contiene un nodo MQInput e un nodo MQOutput ma che non ha accesso ad alcun database.) Si consiglia di non utilizzare le transazioni specifiche delle risorse quando esiste più di una risorsa ed è necessario conservare l'integrità dei dati.

Gli aggiornamenti apportati ad una risorsa a cui si ha accesso in modo non transazionale, sono sottoposti a commit immediatamente. Un nodo MQInput configurato per essere non-transazionale rimuove immediatamente i messaggi dalla coda e se il flusso ha esito negativo i messaggi vanno perduti.

Alcuni nodi di input, come MQInput o i nodi SCADA, possono entrare a far parte di una transazione, a seconda della permanenza del messaggio di input, impostando la modalità transazione su Automatico. I messaggi diventano parte della transazione e il flusso viene contrassegnato come transazionale, se il messaggio di input è permanente e come non-transazionale se il messaggio non è permanente.

L'Esempio Programma di gestione degli errori dà una dimostrazione dell'utilizzo di transazioni globalmente coordinate e delle differenze nel flusso di messaggi quando gli aggiornamenti del database sono coordinati (flusso principale) e quando non lo sono (flusso di errore).

Concetti correlati
Panoramica dei flussi di messaggi
Attività correlate
Creazione di un flusso di messaggi
Definizione del contenuto del flusso di messaggi
Configurazione dei flussi di messaggi coordinati
Gestione degli errori nei flussi di messaggi
Riferimenti correlati
Nodi integrati
Connessioni al database per i flussi di messaggi coordinati
Supporto database per i flussi di messaggi coordinati
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ac00645_