Si su origen de sucesos necesita enviar varios sucesos en un lote,
puede mejorar el rendimiento enviándolos en una única llamada al método sendEvents().
Por qué y cuándo se efectúa esta tarea
Este envío de sucesos por lotes también puede ser útil para grupos
lógicos de sucesos que deben enviarse sólo si una transacción subyacente ha finalizado
correctamente. Todos los sucesos enviados se envían como parte de una única
transacción.
Alternativas para esta tarea
- Para enviar varios sucesos con los valores actuales del emisor, 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(suceso,
modalidad_sincronización,
modalidad_transacción);
Resultado
El valor devuelto, eventIds, es una matriz que contiene
los identificadores exclusivos globales de los sucesos enviados.
Cada suceso
se valida y se comprueba en relación con los criterios de filtro actuales. Todos
los sucesos válidos que superen los criterios del filtro se enviarán utilizando el
mecanismo adecuado:
- Si utiliza el transporte de sucesos síncrono, los sucesos se envían utilizando
una única llamada EJB. Si se produce un error durante la llamada EJB, se emite una
excepción y no se envía ningún suceso.
- Si utiliza el transporte de sucesos asíncrono, todos los sucesos se envían
utilizando un único mensaje JMS. Si se produce un error durante el proceso JMS, se
emite una excepción y no se envía ninguno de los sucesos.