Le impostazioni del profilo produzione del programma di output possono essere modificate dagli event consumer.
Perché e quando eseguire questa attività
Quando si invia un evento, è possibile specificare le opzioni che sostituiscono la modalità di transazione o la modalità di sincronizzazione correnti, o entrambe, attualmente configurate per il programma di output. Queste impostazioni vengono definite inizialmente da un amministratore nel profilo produzione del programma di output, ma possono essere modificate in un secondo momento dagli event consumer.
Un programma di output potrebbe non supportare tutte le modalità di transazione e di sincronizzazione.
Le modalità disponibili sono soggette alle seguenti limitazioni:
- Le modalità di sincronizzazione supportate da un programma di output sono definite dal profilo produzione del programma di output. È possibile determinare quali modalità sono supportate da un determinato programma di output richiamando il metodo isSynchronizationModeSupported();
consultare la documentazione API Javadoc per com.ibm.events.emitter.Emitter per ulteriori informazioni.
- Le transazioni sono supportate solo in un contenitore J2EE.
Se si tenta di utilizzare una modalità non supportata, il programma di output genera
un'eccezione TransactionModeNotSupportedException o SynchronizationModeNotSupportedException.
Passi per questa attività
Per sovrascrivere le impostazioni del programma di output, utilizzare il metodo sendEvent(CommonBaseEvent,
int, int). String eventId = emitter.sendEvent(event,
synchronizationMode,
transactionMode);
I parametri sono i seguenti:
- event
- L'oggetto event (un'istanza di CommonBaseEvent) che si desidera inviare.
- synchronizationMode
- Una costante intera definita dall'interfaccia SynchronizationMode. Deve essere una delle seguenti costanti:
- SynchronizationMode.ASYNCHRONOUS (invia l'evento in modo asincrono)
- SynchronizationMode.SYNCHRONOUS (invia l'evento in modo sincrono)
- SynchronizationMode.DEFAULT (utilizza l'impostazione corrente del programma di output)
- transactionMode
- Una costante intera definita dall'interfaccia TransactionMode:
- TransactionMode.NEW (invia l'evento in una nuova transazione)
- TransactionMode.SAME (invia l'evento nella transazione corrente)
- TransactionMode.DEFAULT (utilizza l'impostazione corrente del programma di output)
Risultato
L'evento viene inviato con le opzioni specificate, Queste opzioni sono valide solo per il singolo evento in fase di invio; non viene apportata alcuna modifica alle impostazioni del programma di output ed i successivi inoltri di evento non sono influenzati.
Il valore restituito, eventId, è un identificativo univoco a livello globale dell'evento (il valore del campo globalInstanceId di CommonBaseEvent). Se l'evento non ha un'identificativo globale dell'istanza (globalInstanceId) quando se ne esegue l'inoltro, il programma di output ne assegna uno automaticamente.
Nota: inoltrare un evento ad un programma di output non garantisce che l'evento venga inviato al server degli eventi, poiché le impostazioni del filtro potrebbero causare l'eliminazione dell'evento.
Una chiamata con esito positivo di sendEvent() significa solo che l'evento è stato correttamente elaborato dal programma di output.
Esempio
Nell'esempio seguente viene sovrascritta l'impostazione del programma di output, per
inviare un evento in una nuova transazione, ma non la modalità di sincronizzazione:
String eventId = sendEvent(event,
SynchronizationMode.DEFAULT,
TransactionMode.NEW);