エミッター・ファクトリー・プロファイル設定をイベント・コンシューマーで変更することができます。
このタスクを実行する理由と時期
イベントを送信する際に、エミッターに対して現在構成されている現行のトランザクション・モード、同期モード、または両方をオーバーライドするオプションを指定できます。これらの設定は、最初はエミッター・ファクトリー・プロファイル内の管理者によって定義されますが、後にイベント・コンシューマーによって変更することが可能です。
エミッターは、すべての同期およびトランザクション・モードを
サポートしない場合があります。
使用可能なモードは、以下の制限に基づきます。
- エミッターでサポートされる同期モードは、エミッター・ファクトリー・プロファイルで定義されます。
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 は、イベントのグローバル固有 ID (CommonBaseEvent の globalInstanceId フィールドの値) です。イベントをサブミットするときにイベントに globalInstanceId がない場合、エミッターによって自動的に割り当てられます。
注: イベントがエミッターにサブミットされても、イベントがイベント・サーバーに送信されたことを保証するものではありません。フィルター設定によってイベントが廃棄される可能性があるためです。
sendEvent() の呼び出しが正常に終了するのは、イベントがエミッターで正常に処理された場合のみです。
以下の例では、新規トランザクションでイベントを送信するためにエミッター設定をオーバーライドしますが、同期モードはオーバーライドしません。
String eventId = sendEvent(event,
SynchronizationMode.DEFAULT,
TransactionMode.NEW);