事件使用端可變更發射器 Factory 設定檔的設定。
執行這項作業的原因和時機
在傳送事件時,您可以指定選項來置換目前配置給發射器的現行交易模式、同步化模式,或兩者。
這些設定一開始是由管理者在發射器 Factory 設定檔中定義的,但稍後事件使用端可以變更它們。
發射器不一定支援所有的同步化和交易模式。可用的模式受到下列限制:
- 發射器支援的同步化模式是由發射器 Factory 設定檔所定義。
您可以呼叫 isSynchronizationModeSupported() 方法來找出特定發射器所支援的模式;
請參閱 Javadoc API 文件以取得 com.ibm.events.emitter.Emitter 的詳細資訊。
- 只有在 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 是事件的廣域唯一 ID(CommonBaseEvent 的 globalInstanceId 欄位值)。如果事件沒有 globalInstanceId,當您送出時,發射器會自動指派一個值。
註: 送出事件給發射器並不保證事件會傳給事件伺服器,
因為過濾器設定可能會導致捨棄事件。成功呼叫 sendEvent() 只表示發射器已順利處理該事件。
範例
下列範例將置換發射器設定,在新交易傳送事件,但不會置換同步化模式:
String eventId = sendEvent(event,
SynchronizationMode.DEFAULT,
TransactionMode.NEW);