Se la propria origine eventi deve inviare più eventi in in batch, è possibile migliorare le prestazioni inviandoli con una singola chiamata del metodo sendEvents().
Perché e quando eseguire questa attività
Organizzare in batch gli eventi in questo modo può rivelarsi altresì utile per i gruppi logici di eventi che devono essere inviati solo se una transazione sottostante è stata completata con esito positivo. Tutti gli eventi inoltrati vengono inviati come parte di una singola transazione.
Alternative per questa attività
- Per inviare più eventi con le impostazioni del programma di output correnti, utilizzare il metodo sendEvents(CommonBaseEvent[]):
String[] eventIds = emitter.sendEvents(events);
In
quest'esempio, emitter è un'istanza Emitter e events è una array di istanze CommonBaseEvent.
- Per inviare più eventi e sostituire le impostazioni del programma di output correnti, utilizzare il metodo sendEvents(CommonBaseEvent, int, int), specificando la modalità di sincronizzazione e di transazione che si desidera utilizzare:
String eventId = emitter.sendEvent(event,
synchronizationMode,
transactionMode);
Risultato
Il valore restituito, eventIds, è una array contenente gli identificativi globalmente univoci degli eventi inviati.
Ogni evento viene convalidato e verificato in base ai criteri di filtraggio correnti. Tutti gli eventi validi che passano i criteri di filtraggio vengono quindi inviati utilizzando il meccanismo appropriato:
- Se si sta utilizzando il trasporto di eventi sincrono, gli eventi vengono inviati utilizzando una singola chiamata EJB. Se si verifica un errore durante la chiamata EJB, viene generata un'eccezione e non viene inviato alcun evento.
- Se si sta utilizzando il trasporto di eventi asincrono, tutti gli eventi vengono inviati utilizzando un singolo messaggio JMS. Se si verifica un errore durante l'elaborazione JMS, viene generata un'eccezione e non viene inviato alcun evento.