Si el origen de sucesos ha de enviar varios sucesos en un lote, puede mejorar el rendimiento
enviándolos con una sola llamada al método sendEvents().
Por qué y cuándo realizar esta tarea
También puede resultar de utilidad el proceso de sucesos en lotes de este modo para grupos lógicos de sucesos que deberían enviarse sólo si una transacción subyacente se ha completado satisfactoriamente.
Todos los sucesos sometidos se envían como parte de una transacción individual.
- Para enviar varios sucesos con los valores del emisor actual, utilice el método
sendEvents(CommonBaseEvent[]):
String[] eventIds = emitter.sendEvents(events);
En este ejemplo, emitter es una instancia de Emitter y events es una matriz de instancias de
CommonBaseEvent.
- Para enviar varios sucesos y alterar temporalmente los valores del emisor actual,
utilice el método sendEvents(CommonBaseEvent, int, int), especificando la modalidad de
sincronización y la modalidad de transacción que desea utilizar:
String eventId = emitter.sendEvent(event,
synchronizationMode,
transactionMode);
Resultado
El valor devuelto, eventIds, es una matriz que contiene
los identificadores exclusivos globalmente de los sucesos enviados.
Todos los sucesos se validan
y comprueban con los criterios de filtro actuales. Todos los sucesos válidos que
pasan los criterios de filtro se envían entonces con el mecanismo adecuado:
- Si utiliza un transporte de sucesos síncrono, se envían los sucesos con una sola llamada
a EJB. Si se produce un error durante la llamada a EJB, se genera una excepción y no
se envía ningún suceso.
- Si utiliza un transporte de sucesos asíncrono, se envían todos los sucesos con un solo mensaje
JMS. Si se produce un error durante el proceso de JMS, se genera una excepción y no
se envía ningún suceso.