发射器工厂概要文件设置可由事件使用者进行更改。
执行此任务的目的和时间
发送事件时,可以指定选项来覆盖当前为发射器配置的事务方式和/或同步方式。这些设置起初是由管理员在发射器工厂概要文件中定义的,但事件使用者可以对它们进行后续更改。
一个发射器可能不支持所有同步方式和事务方式。可用方式有以下局限性:
- 发射器工厂概要文件定义发射器支持的同步方式。您可以通过调用
isSynchronizationModeSupported() 方法来找出特定发射器支持的方式;有关更多信息,请参阅
com.ibm.events.emitter.Emitter 的 Javadoc API 文档。
- 事务只有在 J2EE 容器中是受支持的。
如果您尝试使用不受支持的方式,发射器将抛出 TransactionModeNotSupportedException 或 SynchronizationModeNotSupportedException 异常。
完成此任务需要执行的步骤
要覆盖发射器设置,请使用 sendEvent(CommonBaseEvent, int, int) 方法。 String eventId = emitter.sendEvent(event,
synchronizationMode,
transactionMode);
参数如下:
- event
- 要发送的事件对象(CommonBaseEvent 的实例)。
- synchronizationMode
- 由接口 SynchronizationMode 定义的整数常量。它应该是下列其中一个常量:
- SynchronizationMode.ASYNCHRONOUS(以异步方式发送事件)
- SynchronizationMode.SYNCHRONOUS(以同步方式发送事件)
- SynchronizationMode.DEFAULT(使用当前发射器设置)
- transactionMode
- 由接口 TransactionMode 定义的整数常量:
- TransactionMode.NEW(发送新事务中的事件)
- TransactionMode.SAME(发送当前事务中的事件)
- TransactionMode.DEFAULT(使用当前发射器设置)
结果
将使用您指定的选项发送事件。这些选项仅适用于要发送的单个事件;发射器设置未作任何更改,所以后续事件提交不会受到影响。
返回的值 eventId 是事件的全局唯一标识(它是 CommonBaseEvent
的 globalInstanceId 字段的值)。如果事件在提交时没有 globalInstanceId,发射器将自动为它指定一个。
注: 将事件提交给发射器并不能保证将事件发送至事件服务器,原因是过滤器设置可能导致事件被废弃。对 sendEvent()
的成功调用只表示发射器已成功处理该事件。
示例
以下示例覆盖用于在新事务中发送事件的发射器设置,但它并未覆盖同步方式:
String eventId = sendEvent(event,
SynchronizationMode.DEFAULT,
TransactionMode.NEW);