エミッター・ファクトリー・プロファイル設定は、イベント・コンシューマーにより変更できます。
このタスクを実行する理由および時期
イベントを送信する場合、現在そのエミッター用に構成されている、現行のトランザクション・モード、同期モード、またはその両方をオーバーライドするオプションを指定できます。
これらの設定は、最初に管理者によってエミッター・ファクトリー・プロファイルで定義されていますが、イベント・コンシューマーによって後で変更することができます。
一部のエミッターでは、同期モードおよびトランザクション・モードのすべてには対応していない場合があります。
使用可能なモードには、以下の制限があります。
- エミッターに対応する同期モードは、エミッター・ファクトリー・プロファイルにより定義されます。
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);