Alterar temporalmente los valores del emisor actual

Los consumidores de sucesos pueden modificar los valores del perfil de la fábrica de emisores.

Por qué y cuándo realizar esta tarea

Cuando se envía un suceso, se pueden especificar opciones que alteren temporalmente la modalidad de transacción o de sincronización actuales, o ambas, que se han configurado actualmente para el emisor. Estos valores los define inicialmente un administrador del perfil de la fábrica de emisores, pero los consumidores de sucesos pueden modificarlos más adelante.

Es posible que un emisor no dé soporte a todas las modalidades de sincronización y transacción. Las modalidades disponibles están sujetas a las siguientes limitaciones: Si intenta utilizar una modalidad que no está soportada, el emisor genera una excepción TransactionModeNotSupportedException o SynchronizationModeNotSupportedException.

Pasos para realizar esta tarea

Para alterar temporalmente los valores del emisor, utilice el método sendEvent(CommonBaseEvent, int, int).
String eventId = emitter.sendEvent(event,
                                   synchronizationMode,
                                   transactionMode);
Los parámetros son los siguientes:
event
El objeto event (una instancia de CommonBaseEvent) que desea enviar.
synchronizationMode
Una constante de entero definida mediante la interfaz SynchronizationMode. Debe ser una de las constantes siguientes:
  • SynchronizationMode.ASYNCHRONOUS (enviar el suceso de forma asíncrona)
  • SynchronizationMode.SYNCHRONOUS (enviar el suceso de forma síncrona)
  • SynchronizationMode.DEFAULT (utilizar el valor del emisor actual)
transactionMode
Una constante de entero definida por la interfaz TransactionMode:
  • TransactionMode.NEW (enviar el suceso en una transacción nueva)
  • TransactionMode.SAME (enviar el suceso en la transacción actual)
  • TransactionMode.DEFAULT (utilizar el valor del emisor actual)

Resultado

El suceso se envía con las opciones que haya especificado. Estas opciones solamente se aplican al suceso individual que se está enviando; no se realizan cambios en los valores del emisor y los envíos de sucesos posteriores no resultan afectados.

El valor devuelto eventId es el identificador exclusivo globalmente del suceso (el valor del campo globalInstanceId de CommonBaseEvent). Si el suceso no tiene un identificador globalInstanceId cuando lo envía, automáticamente el emisor le asigna uno.

Nota: Si se somete un suceso a un emisor no se garantiza que se envíe el suceso al servidor de sucesos, dado que los valores del filtro podrían provocar que se descartara el suceso. Una llamada satisfactoria a sendEvent sólo significa que el emisor ha procesado correctamente el suceso.
El ejemplo siguiente altera temporalmente los valores del emisor para enviar un suceso en una transacción nueva pero no altera temporalmente la modalidad de sincronización:
String eventId = sendEvent(event,
                           SynchronizationMode.DEFAULT,
                           TransactionMode.NEW);

Condiciones de uso |


(c) Copyright IBM Corporation 2005, 2006.
Este centro de información está basado en tecnología Eclipse (http://www.eclipse.org)