8.10 Oracle GoldenGate for Distributed Applications and AnalyticsによるGoogle Pub/Subへのリアルタイム・メッセージ取込み
概要
このクイックスタートでは、Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)を使用してリアルタイムでGoogle Pub/Subにメッセージを取り込む方法を手順を追って説明します。
Google Pub/Subは、メッセージ・プロデューサ(パブリッシャ)をメッセージ・コンシューマ(サブスクライバ)から切り離すことでアプリケーション間の非同期通信を可能にする、スケーラブルで信頼性の高いメッセージング・サービスです。
GG for DAAでは、Google Pub/SubハンドラでGoogle Pub/Subと接続します。GG for DAAにより、証跡ファイルからソース操作が読み取られ、それらがフォーマットされ、Google Pub/Subトピックにマップされ、配信されます。
親トピック: クイックスタート
8.10.1 前提条件
- Google Pub/Subサービスおよびトピック
- Googleサービス・アカウント・キー
このクイックスタートでは、GG for DAAに付属のサンプル証跡ファイル(tr
)を使用します。サンプル証跡ファイルは、GG for DAAインスタンスのGG_HOME/opt/AdapterExamples/trail/
にあります。
8.10.2 依存性ファイルのインストール
Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)では、Google Pub/Subクライアント・ライブラリが使用されます。依存性ダウンローダを使用してそれらのクライアント・ライブラリをダウンロードできます。依存性ダウンローダは、Mavenおよび他のリポジトリから依存性jarファイルをダウンロードするシェル・スクリプトのセットです。
- GG for DAA VMで、依存性ダウンローダ・ユーティリティに移動します。それは
GG_HOME/opt/DependencyDownloader/
にあります。googlepubsub.sh
を見つけます。 - 必要なバージョンを指定して
googlepubsub.sh
を実行します。バージョンおよび報告されている脆弱性は、Maven Centralで確認できます。このクイックスタートでは、その公開時の最新バージョンである1.129.3を使用しています。 - 新しいディレクトリ
<googlepubsub_version>
がGG_HOME/opt/DependencyDownloader/dependencies
に作成されます。Replicatのプロパティで使用するため、このディレクトリを書き留めます。/u01/app/ogg/opt/DependencyDownloader/dependencies/googlepubsub_1.129.3
8.10.3 Oracle GoldenGate for Distributed Applications and AnalyticsでのReplicatの作成
Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)でReplicatを作成するには:
- 「管理サービス」タブで、「+」記号をクリックしてReplicatを追加します。
図8-69 「管理サービス」タブの「+」をクリックします。
- 「Replicatタイプ」で「クラシックReplicat」を選択し、「次」をクリックします。クラシックと調整済という2つの異なるReplicatタイプを使用できます。クラシックReplicatは単一のスレッド・プロセスですが、調整済Replicatは、トランザクションをパラレルに適用するマルチスレッド・プロセスです。
図8-70 Replicatの追加
- Replicatオプションを入力し、「次」をクリックします。
- Replicatトレイル: 必要な証跡ファイルの名前(サンプル証跡を使用している場合は、
tr
と指定します) - サブディレクトリ: サンプル証跡を使用する場合は、
GG_HOME/opt/AdapterExamples/trail/
と指定します。 - ターゲット: Google Pub/Sub
図8-71 Replicatオプション
- Replicatトレイル: 必要な証跡ファイルの名前(サンプル証跡を使用している場合は、
- 「管理対象オプション」はそのままにして、「次」をクリックします。
図8-72 管理対象オプション
- 「パラメータ・ファイル」の詳細を入力し、「次へ」をクリックします。「パラメータ・ファイル」では、ソースからターゲットへのマッピングを指定するか、ワイルドカード選択のままにしておくことができます。
図8-73 パラメータ・ファイル
- 「プロパティ・ファイル」で、TODOとマークされているプロパティを更新し、「作成および実行」をクリックします。
# Properties file for Replicat GPUBSUB #Google Pub/Sub Handler Template gg.handlerlist=pubsub gg.handler.pubsub.type=googlepubsub gg.handler.pubsub.mode=op #TODO: Set the path to the JSON credenials file gg.handler.pubsub.credentialsFile= #TODO: Set the template to resolve the topic name gg.handler.pubsub.topicMappingTemplate= #TODO Set the project name gg.handler.pubsub.projectName= #TODO: Set the template to resolve the order key - Not required but recommended. gg.handler.pubsub.orderingKeyMappingTemplate= ${primaryKeys} gg.handler.pubsub.format=json_row gg.handler.pubsub.format.metaColumnsTemplate=${objectname[table]},${optype[op_type]},${timestamp[op_ts]},${currenttimestamp[current_ts]},${position[pos]} #TODO: Set the path to the Google Pub/Sub client jar files. gg.classpath=path_to/dependencies/googlepubsub_1.129.3/* GG for DAA supports dynamic topic mapping by template keywords. For example, if you assign topicMappingTemplate as ${tablename}, GG for DAA will create a topic with the source table name, per each source table and will map the events to these topics. Oracle recommends using orderingkeyMappingTemplate=${primaryKeys}, GG for DAA will send the source operations with the same pk in the same source order. This will guarantee maintaining the order of the source operations while subscriber clients receive the messages.
GG for DAAでは、テンプレート・キーワードによる動的トピック・マッピングがサポートされています。たとえば、topicMappingTemplateを${tablename}として
割り当てた場合は、GG for DAAにより、ソース表ごとに、ソース表名でトピックが作成され、イベントがこれらのトピックにマップされます。orderingkeyMappingTemplate=${primaryKeys}
を使用することをお薦めします。この場合は、GG for DAAにより、pkが同一のソース操作が、同じソース順序で送信されます。これにより、サブスクライバ・クライアントでメッセージが受信されている間の、ソース操作の順序が維持されます。 - Replicatが正常に起動すると、実行状態になります。「アクション」/「詳細」/「統計」に移動して、レプリケーション統計を確認できます。
図8-74 レプリケーション統計
- Google Pub/Subに移動してメッセージを確認できます
Google Pub/Subレプリケーションの詳細は、「Google Pub/Sub」を参照してください。