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.
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.
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).