9.4.4.1 イベント・ハンドラの指定
トランザクション、操作およびメタデータ・イベントのJavaでの処理は次のようになります。
-
Oracle GoldenGate ReplicatまたはExtractプロセスがローカル証跡データを読み取り、トランザクション、操作およびデータベース・メタデータをJava配信モジュールに渡します。メタデータは、証跡自体のソース定義ファイルから取得できます。
-
Javaフレームワークがイベントを発行します。イベントは、オプションでカスタム・イベント・フィルタによってフィルタされます。
-
ハンドラ(イベント・リスナー)がこれらのイベントを処理し、トランザクション、操作およびメタデータを処理します。特定のタイプのターゲットにカスタム・フォーマッタが適用される場合があります。
既存のハンドラがいくつかあります。
-
様々な組込みOracle GoldenGate for Distributed Applications and Analytics (GG for DAA)ハンドラでの、サポートされているGG for DAAターゲットへのレコードの適用については、「データの複製」で、GG for DAAでサポートされている様々なハンドラの構成を参照してください。
-
MapMessage
を使用するか、TextMessage
をカスタマイズ可能なフォーマッタと組み合せて使用し、JMSプロバイダに送信するJMSメッセージ・ハンドラ。 -
JMSメッセージをOracleアドバンスト・キューイング(AQ)に送信する、専用のメッセージ・ハンドラ。
-
1つのファイルまたはローリング・ファイルに書き込むファイル・ライター・ハンドラ。
ノート:
ファイル・ライターはJMS
TextMessage
ハンドラと完全に同じフォーマッタを使用できるため、ファイル・ライター・ハンドラは開発ユーティリティとして特に有用です。ファイル・ライターを使用すると、JMSに実際にメッセージを送らずにJMS用のフォーマッタのテストとチューニングを簡単に行えます。
イベント・ハンドラはメインJavaプロパティ・ファイルを使用して構成できます。あるいは、オプションで別のプロパティ・ファイルから直接プロパティを読み込む場合もあります(ハンドラの実装によって異なります)。ハンドラのプロパティは次の構文を使用して設定されます。
gg.handler.{name}.someproperty=somevalue
これによって、プロパティ・ファイルでname
で識別されるハンドラ・インスタンスのプロパティsomeproperty
が値somevalue
に設定されます。このname
はプロパティ・ファイルで使用され、アクティブ・ハンドラを定義し、そのプロパティを設定します。これはユーザー定義です。
実装上のノート(Java開発者向け): 前述の例の後、ハンドラがインスタンス化されると、メソッドvoid
setSomeProperty
(String value)がハンドラ・インスタンスでコールされ、文字列値somevalue
が渡されます。JavaBean PropertyEditor
もハンドラに対して定義できます。この場合、文字列は、セッター・メソッドに対して適切な型に自動的に変換されます。たとえば、Javaアプリケーション・プロパティ・ファイルで次のような設定だとします。
# the list of active handlers: only two are active gg.handlerlist=one, two # set properties on 'one' gg.handler.one.type=file gg.handler.one.format=com.mycompany.MyFormatter gg.handler.one.file=output.xml # properties for handler 'two' gg.handler.two.type=jms_text gg.handler.two.format=com.mycompany.MyFormatter gg.handler.two.properties=jboss.properties # set properties for handler 'foo'; this handler is ignored gg.handler.foo.type=com.mycompany.MyHandler gg.handler.foo.someproperty=somevalue
タイプによってハンドラ・クラスが識別されます。他のプロパティは、作成されるハンドラのタイプによって異なります。別個のプロパティ・ファイルがハンドラ(JMSハンドラなど)の初期化に使用される場合、プロパティ・ファイルはクラスパスにあります。たとえば、プロパティ・ファイルが{
gg_install_dir
}/dirprm/foo.properties
にある場合、プロパティ・ファイルでgg.handler.
name
.properties=foo.properties
のように指定します。
親トピック: イベント・ハンドラの構成