8.2.20 Java Message Service
Java Message Service (JMS)ハンドラを使用すると、証跡ファイルの操作をメッセージにフォーマットし、Oracle Weblogic Server、Websphere、ActiveMQなどのJMSプロバイダに公開できます。
この章では、JMSハンドラの使用方法について説明します。
親トピック: ターゲット
8.2.20.1 概要
Java Message Serviceは、アプリケーションでメッセージの作成、送信、受信および読取りを行うことができるJava APIです。JMS APIでは、Javaプログラミング言語で記述されたプログラムが他のメッセージング実装と通信できるように、共通する一連のインタフェースおよび関連するセマンティクスを定義します。
JMSハンドラは、Oracle GoldenGateの証跡を取得し、それらのメッセージを構成されているJMSプロバイダに送信します。
ノート:
Java Message Service (JMS)ハンドラはDDL操作をサポートしていません。DDL操作の場合、Replicat/Extractは失敗すると予想されます。親トピック: Java Message Service (JMS)
8.2.20.2 JMSハンドラの設定および実行
JMSハンドラの設定(JNDI構成)は、使用するJMSプロバイダによって異なります。
次の各項では、JMSハンドラのコンポーネントの構成およびこのハンドラの実行の手順について説明します。
実行時の前提条件
JMSプロバイダは、起動および実行されていて、必要なConnectionFactory
、QueueConnectionFactory
およびTopicConnectionFactory
が構成されている必要があります。
セキュリティ
使用するJMSプロバイダに応じてSSLを構成します。
- クラスパス構成
JMSハンドラのプロパティ・ファイルをOracle GoldenGateのdirprm
ディレクトリに格納することをお薦めします。 - Java Naming and Directory Interfaceの構成
- ハンドラ構成
- Oracle WebLogic Serverを使用した構成のサンプル
親トピック: Java Message Service (JMS)
8.2.20.2.1 クラスパス構成
JMSハンドラ・プロパティ・ファイルは、Oracle GoldenGate dirprm
ディレクトリに保存することをお薦めします。
プロバイダ・クライアントJARの場所は次のように指定します。
gg.classpath= path_to_the_providers_client_jars
親トピック: JMSハンドラの設定および実行
8.2.20.2.2 Java Naming and Directory Interfaceの構成
Java Naming and Directory Interface (JNDI)プロパティを構成して初期コンテキストに接続し、接続ファクトリと初期宛先を参照します。
表8-28 JNDI構成プロパティ
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
|
必須 |
有効なプロバイダURL (ポートを含む) |
なし |
ハンドラがサーバー上のオブジェクトを参照するために使用するURLを指定します。たとえば、 |
|
必須 |
初期コンテキスト・ファクトリ・クラス名 |
なし |
新しい初期コンテキスト・オブジェクトの作成時に使用する初期コンテキスト・ファクトリを指定します。Oracle WebLogic Serverの場合、値は |
|
必須 |
有効なユーザー名 |
なし |
使用するユーザー名を指定します。 |
|
必須 |
有効なパスワード |
なし |
ユーザーのパスワードの指定 |
親トピック: JMSハンドラの設定および実行
8.2.20.2.3 ハンドラ構成
JMSハンドラの操作は、プロパティ・ファイルを使用して構成します。これらのプロパティは、Javaアダプタ・プロパティ・ファイルにあります(Replicatプロパティ・ファイルにはありません)
JMSハンドラの選択を有効にするには、まずgg.handler.name.type=jms
およびその他のJMSプロパティを次のように指定してハンドラ・タイプを構成する必要があります。
表8-29 JMSハンドラの構成プロパティ
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
|
必須 |
|
なし |
トランザクション、操作およびメタデータをフォーマットされたメッセージとしてJMSプロバイダに送信するには、 |
|
必須 |
有効なキューまたはトピックの名前 |
なし |
メッセージが送信されるキューまたはトピックを設定します。これは、JMSサーバーで適切に構成される必要があります。たとえば、 |
|
オプション |
|
|
ハンドラがキューに送信する(単一受信者)か、トピックに送信する(パブリッシュ/サブスクライブ)かを指定します。 |
|
必須 |
有効な接続ファクトリ名 |
なし |
JNDIを使用して検索する接続ファクトリの名前を指定します。 |
|
オプション |
|
|
|
|
オプション |
有効な接続URL |
なし |
JNDIを使用せずに接続を明示的に作成する場合にのみ指定します。 |
|
オプション |
有効な |
なし |
JNDIを使用しない場合にのみ、ファクトリにアクセスするために設定します。このプロパティの値はインスタンス化するJavaクラス名であり、ファクトリ・オブジェクトが明示的に構築されます。 |
|
オプション |
JNDIプロバイダではなく |
なし |
JMSがJNDIを使用するように構成されている場合、物理的な宛先は重要です。 |
|
オプション |
有効なユーザー名 |
なし |
JMSサーバーにメッセージを送信するためのユーザー名。 |
|
オプション |
有効なパスワード |
なし |
JMSサーバーにメッセージを送信するためのパスワード |
|
オプション |
|
|
JMSセッション・モードを設定します。これらの値は標準のJMS値と同等と見なされます。 |
|
オプション |
|
|
メッセージの送信時にローカル・トランザクションを使用するかどうかを設定します。単一のメッセージを一度に1つずつ送信およびコミットしていないかぎり、ローカル・トランザクションはデフォルトで有効になっています。ローカル・トランザクションを無効にする場合は、 |
|
オプション |
|
|
配信モードを永続または非永続に設定します。メッセージが永続の場合、クライアントの送信操作の一環としてメッセージを安定的なストレージに記録するようJMSプロバイダを構成する必要があります。 |
|
オプション |
0から10までの有効な整数 |
|
JMSサーバーで、0を最低、9を最高とする10段階の優先度の値が定義されます。 |
|
オプション |
時間(ミリ秒) |
|
生成されたメッセージがメッセージ・システムによって保持される時間のディスパッチ時間からの長さ(ミリ秒)を設定します。ゼロに設定すると、時間は無制限になります。 |
|
オプション |
|
なし |
メッセージが配信される前にメッセージにプロパティを設定できるように、メッセージ・リスナーを構成します。 |
|
オプション |
|
|
操作およびトランザクションをJMSサーバーに送信されるメッセージに変換するために使用するフォーマットを指定します。 velocityテンプレートはテンプレート・ファイルの場所を指している必要があります。サンプルは 例:
|
|
オプション |
有効な表名のリスト |
なし |
ハンドラによって含められる表のリストを指定します。 表のスキーマ(または所有者)が指定されている場合は、そのスキーマのみが表名と一致します。それ以外の場合、表名は任意のスキーマに一致します。表のカンマ区切りのリストを指定できます。たとえば、ハンドラに表 表のカタログとスキーマ(または所有者)が指定されている場合、そのカタログとスキーマのみが表名と一致します。それ以外の場合、表名は任意のカタログおよびスキーマに一致します。表のカンマ区切りのリストを指定できます。たとえば、ハンドラに表 いずれかの表が含める表のリストと一致する場合は、そのトランザクションが含められます。 指定された表名のリストでは、大文字と小文字が区別されます。 |
|
オプション |
有効な表名のリスト |
なし |
ハンドラによって除外される表のリストを指定します。 表単位で表での操作を選択的に処理するには、ハンドラは操作モードで処理している必要があります。ハンドラがトランザクション・モードで処理されていて、1つのトランザクションに複数の表にまたがる複数の処理が含まれている状況では、いずれかの表が除外する表のリストと一致する場合、そのトランザクションは除外されます。 指定された表名のリストでは、大文字と小文字が区別されます。 |
|
オプション |
|
|
1メッセージ当たり1つの操作を出力する( |
gg.handler.name.metaHeadersTemplate |
オプション | メタ列キーワードのカンマ区切りリスト。 | なし | メタ列を選択し、メタ列キーワード構文を使用してコンテキスト・ベースのキー値ペアをJMSメッセージ・ヘッダー・プロパティに挿入できます。JMSメタ列ヘッダーはトランザクション・モードではサポートされていません。
例: gg.handler.sample_jms.metaHeadersTemplate=${primarykeys[JMSXGroupID]} |
親トピック: JMSハンドラの設定および実行
8.2.20.2.4 Oracle WebLogic Serverを使用した構成のサンプル
#JMS Handler Template
gg.handlerlist=jms
gg.handler.jms.type=jms
#TODO: Set the message formatter type
gg.handler.jms.format=
#TODO: Set the destination for resolving the queue/topic name.
gg.handler.jms.destination=
#Start of JMS handler properties when JNDI is used.
gg.handler.jms.useJndi=true
#TODO: Set the connectionFactory for resolving the queue/topic name.
gg.handler.jms.connectionFactory=
#TODO: Set the standard JNDI properties url, initial factory name, principal and credentials.
java.naming.provider.url=
java.naming.factory.initial=
java.naming.security.principal=
java.naming.security.credentials=
End of JMS handler properties when JNDI is used.
#Start of JMS handler properties when JNDI is not used.
#TODO: Comment the above properties related to useJndi is true.
#TODO: Uncomment the below properties to configure when useJndi is false.
#gg.handler.jms.useJndi=false
#TODO: Set connectionURL of MQ.
#gg.handler.jms.connectionUrl=
#TODO: Set the connection Factory Class of the MQ.
#gg.handler.jms.connectionFactoryClass=
#TODO: Set the path the jms client library wlthint3client.jar
gg.classpath=
jvm.bootoptions=-Xmx512m -Xms32m
親トピック: JMSハンドラの設定および実行
8.2.20.3 JMS依存性
Java EE仕様APIは、Java 8のJDKから移動されました。JMSはこの仕様の一部であるため、この依存性が必要です。
Maven groupId: javax
Maven artifactId: javaee-api
バージョン: 8.0
Maven Central Repositoryからjarをダウンロードできます。