Le uscite utente consentono al software personalizzato fornito
dall'utente di tenere traccia del trasferimento di dati tramite i flussi di messaggio in
WebSphere Message
Broker.
Le funzioni fornite dall'utente possono essere richiamate in momenti specifici durante
il ciclo di vita di un messaggio mentre passa attraverso il flusso del messaggio e possono richiamare
funzioni dei programmi di utilità per ricercare informazioni sul punto nel flusso e sui contenuti
del complessivo del messaggio.
Le uscite utente possono essere richiamate quando si verificano uno o più dei seguenti eventi:
- Fine UOW (unit-of-work) o transazione (COMMIT/ROLLBACK)
- Passaggio di un messaggio tra due nodi
- Eliminazione di un messaggio dalla coda dell'origine di input.
Nel flusso di messaggi di base riportato di seguito, è possibile tenere traccia dei messaggi
a due livelli:
- Livello di transazione
- Livello del nodo
A livello della transazione, è possibile tenere traccia dei seguenti eventi:
- Messaggi letti nel flusso
- Completamento della transazione.
A livello del nodo, è possibile tenere traccia dei seguenti eventi:
- Passaggio di un messaggio da un nodo all'altro
- Completamento dell'elaborazione per un nodo.
Ciò significa che esistono quattro tipi differenti di eventi, che si verificano nella seguente
sequenza:
- Eliminazione di un messaggio dalla coda dell'origine di input (letto nel flusso).
- Distribuzione di un messaggio al nodo per l'elaborazione
- Elaborazione nodo completata
- Fine della transazione.
Nel diagramma precedente, il nodo MQInput viene utilizzato come esempio, ma la funzione si applica
a tutti i nodi di input, inclusi i nodi definiti dall'utente. Tuttavia, vi è una lieve differenza
tra nodi incorporati e nodi definiti dall'utente, nel modo in cui le uscite utente vengono
richiamate. Per nodi di input incorporati, l'uscita utente viene richiamata prima possibile dopo
la lettura dei dati dall'origine esterna. Per nodi di input definiti dall'utente, l'uscita utente
viene chiamata appena prima che il nodo propaghi il messaggio.
Nel precedente esempio, l'evento 4 viene eliminato alla fine della transazione.
L'uscita utente viene richiamata dopo il completamento della transazione, quindi l'elaborazione
dell'uscita utente non fa parte di tale transazione. L'uscita utente viene richiamata anche se
non è stata completata alcuna elaborazione di transazione dal flusso. Dove la proprietà del flusso
di messaggio, Numero di commit, è maggiore di 1, esiste un rapporto più a uno tra l'evento 1 e
l'evento 4. Ciò vale anche per alcuni scenari specifici del particolare nodo di input; ad esempio,
quando un MQInputNode viene configurato dalla proprietà Esegui il commit per gruppo messaggi
selezionata.
È possibile scrivere un'uscita utente per tenere traccia del numero di tali eventi. Per ognuno
di tali eventi, i seguenti dati sono disponibili per l'uscita utente. L'accesso è di sola lettura,
a meno che non venga indicato diversamente:
- Elimina messaggio dalla coda
- Flusso di bit
- Nodo di input
- Albero di ambiente (lettura/scrittura)
- Messaggio propagato al nodo:
- Struttura ad albero del messaggio
- Albero LocalEnvironment (lettura/scrittura)
- Elenco di eccezioni
- Albero di ambiente (lettura/scrittura)
- Nodo di origine
- Nodo di destinazione
- Elaborazione nodo completata:
- Struttura ad albero del messaggio
- Albero LocalEnvironment (lettura/scrittura)
- Elenco di eccezioni
- Albero di ambiente (lettura/scrittura)
- Nodo
- Nodo a monte del flusso
- Eccezione (se presente)
- Fine della transazione:
- Nodo di input
- Eccezione, se presente
- Albero di ambiente (lettura/scrittura)
È possibile registrare più uscite utente e, se presenti, queste vengono richiamate in un ordine
definito (consultare Comando mqsichangeflowuserexits). Le modifiche apportate al complessivo
del messaggio da un'uscita utente sono visibili nelle uscite successive.
Quando l'uscita utente viene richiamata, è possibile richiedere le seguenti informazioni:
- Informazioni del flusso di messaggi
- Nome flusso di messaggi
- Nome del broker
- Nome del gestore code di un broker
- Nome del gruppo di esecuzione
- Proprietà del numero di commit del flusso di messaggi
- Proprietà dell'intervallo di commit del flusso di messaggi
- Proprietà di transazione coordinata del flusso di messaggi.
- Informazioni sul nodo:
- Nome del nodo
- Tipo di nodo
- Nome del terminale
- Proprietà del nodo
- Passare e consulare il complessivo di messaggi (Message,LocalEnvironment,ExceptionList)
- Passare e leggere/scrivere la struttura ad albero Environment.
Le uscite utente possono essere registrate su base dinamica, senza necessità di ridistribuire
la configurazione.