9.2.23 Google Pub/Sub
親トピック: ターゲット
9.2.23.1 概要
Pub/Subでは、約100ミリ秒の待機時間で、サービスが非同期式で通信できます。
Pub/Subでは、パブリッシャおよびサブスクライバと呼ばれるイベント・プロデューサおよびコンシューマのシステムを作成できます。パブリッシャは、同期リモート・プロシージャ・コール(RPC)ではなく、イベントをブロードキャストすることでサブスクライバと非同期式で通信します。
パブリッシャにより、イベントが、これらのイベントの処理方法や処理時期に関係なく、Pub/Subサービスに送信されます。その後、Pub/Subにより、イベントが、それらに反応するすべてのサービスに配信されます。RPCを介して通信するシステムでは、パブリッシャは、サブスクライバがデータを受信するまで待機する必要があります。しかしながら、Pub/Subでの非同期統合により、システム全体の柔軟性と堅牢性が向上します。
親トピック: Google Pub/Sub
9.2.23.2 詳細な機能
トランザクション・モード
次の構成では、Google PubSubハンドラがトランザクション・モードに設定されます:gg.handler.name.Mode=tx
。トランザクション・モードでは、ソースOracle GoldenGate証跡ファイルからのトランザクションにおける各操作のシリアライズ・データが連結されます。この連結された操作データの内容は、Google Pubsubメッセージの値です。結果として、このメッセージには1からNまでの操作のデータが含まれます。ここでのNは、そのトランザクションにおける操作の数です。
操作モード
次の構成では、Google PubSubハンドラが操作モードに設定されます:gg.handler.name.Mode=op
。
操作モードでは、操作ごとのシリアライズ・データが、個々のGoogle Pubsubメッセージにその値として配置されます。つまり、着信操作と、生成されるGoogle Pubsubメッセージの数との間には、1対1の関係があります。
親トピック: Google Pub/Sub
9.2.23.3 Google PubSubハンドラの設定と実行
クラスパスの構成
Google PubSubハンドラがGoogle PubSubに接続して動作するためには、プロパティ・ファイルおよびGoogle PubSubクライアントJARがgg.classpath
構成変数で構成されている必要があります。GooglePubSub
jarファイルを入手するには、依存性ダウンローダ・ツールを使用します。
Google PubSubのプロパティ・ファイルの格納場所としてお薦めしているのは、Oracle GoldenGateのdirprm
ディレクトリです。gg.classpath
は、正確に構成する必要があります。
*
)を含めると、このファイルが選択されません。逆に、依存性JARのパスには、関連するクラスパスにそのディレクトリにあるすべてのJARファイルが含まれるように、ワイルドカード(*
)を含める必要があります。*.jar
は使用しないでください。正しく構成されたクラスパスの例を次に示します: gg.classpath={google PubSub install dir}/libs/*
。
親トピック: Google Pub/Sub
9.2.23.4 ハンドラ認証の構成
Google PubSubからダウンロードしたJSONファイル内の資格証明を使用してGoogle PubSubハンドラ認証を構成する必要があります。
資格証明ファイルをダウンロードします。
- cloud.google.comでGoogleアカウントにログインします。
- 「コンソール」をクリックし、プロジェクトを選択できるダッシュボードに移動します。
- ナビゲーション・メニューで、「APIs & Services」をクリックしてから、「Credentials」を選択します。
- 「Create Credentials」メニューから、「Service account key」を選択します。
- 「JSON key」タイプを選択して、ご使用のシステム用のJSON資格証明ファイルをダウンロードします。
gg.handler.name.credentialsFile構成プロパティを使用して、プロパティ・ファイル内にその資格証明ファイルへのパスを指定します。
資格証明ファイルのパスには、ワイルドカードが付加されていないパスを使用してください。資格証明ファイルへのパスに*
ワイルドカードを含めると、ファイルが認識されません。
Google PubSub資格証明ファイルの構成サンプル:
{ "type": "<accountType>", "project_id": "<projectType>", "private_key_id": "<privateKeyId>", "private_key": "<privateKey>", "client_email": "<googleCloudSubscriptionEmailId>", "client_id": "<subscriptionClientId>", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "", "client_x509_cert_url": "" }
親トピック: Google Pub/Sub
9.2.23.5 Google PubSubハンドラ構成
プロパティ名 | 必須/オプション | プロパティ値 | デフォルト | 説明 |
gg.handlerlist |
必須 | 名前(任意の名前を選択) | なし | 使用するハンドラのリスト |
gg.handler.name.type |
必須 | oracle.goldengate.handler.googlepubsub.GooglePubsubHandler |
なし | 使用するハンドラのタイプ |
gg.handler.name.format |
オプション | フォーマッタ・クラスまたはショート・コード | json | ペイロードのフォーマットに使用するフォーマッタ。xml 、delimitedtext 、json 、json_row 、avro_row またはavro_op のいずれかです |
gg.handler.name.credentialsFile |
必須 | 絶対パスでのjson形式の資格証明ファイルの名前 | json | 該当なし |
gg.handler.name mode |
オプション | tx/op |
tx | 該当なし |
gg.handler.name.topicMappingTemplate |
必須 | 該当なし | 該当なし | Replicatによるメッセージ公開先となるGoogle PubSubトピック名。詳細は、「テンプレートを使用したトピック名とメッセージ・キーの解決」を参照してください |
gg.handler.name.projectName |
必須 | 該当なし | 該当なし | Google PubSubプロジェクト名 |
gg.handler.name.batchProcessing |
オプション | true /false |
false |
有効にした場合は、メッセージがバッチで処理されるようになり、Replicatのパフォーマンスが向上します。 |
gg.handler.name.requestBytesThreshold |
オプション | 数値の整数 | 1000 | 最大バイト数の指定による、パブリッシュ・リクエストの最大サイズ |
gg.handler.name.messageCountBatchSize |
オプション | 数値の整数 | 100 | 最大メッセージ数の指定による、パブリッシュ・リクエストの最大サイズ |
gg.handler.name.publishDelayThreshold |
オプション | 数値の整数 | 100 | バッチを送信するまでの待機時間(具体的に述べると、バッチを満たすためにメッセージを保持する時間)を柔軟に制御できます。この値を小さくすると、待機時間が改善されます。このプロパティ値は、バッチ時間間隔(ミリ秒単位)です。 |
gg.handler.name.attributesTemplate |
オプション | 属性キーワードのカンマ区切りリスト。 | なし | メッセージの様々なプロパティを、google pubsubメッセージの属性として設定できます。これにより、ユーザー/サブスクライバが、設定した属性に基づいてメッセージを簡単にフィルタできます。このプロパティの構成の詳細は、「メタ列のキーワード」を参照してください。 |
gg.handler. name.orderingKeyMappingTemplate |
オプション |
実行時にpubsubメッセージ順序キーを解決するためのテンプレート文字列値。 トランザクション・モードの実行時には、静的な |
なし | 詳細は、「テンプレートを使用したトピック名とメッセージ・キーの解決」を参照してください |
親トピック: Google Pub/Sub
9.2.23.6 プロキシ設定
jvm.bootoptions= -Dhttps.proxyHost=proxy_host_name -Dhttps.proxyPort=proxy_port_number
親トピック: Google Pub/Sub
9.2.23.7 サンプル構成
gg.handlerlist=pubsub #The Google Pub/Sub Handler gg.handler.pubsub.type=googlepubsub gg.handler.pubsub.mode=op #Set the path to the JSON credenials file gg.handler.pubsub.credentialsFile= #Set the template to resolve the topic name gg.handler.pubsub.topicMappingTemplate= #Set the project name gg.handler.pubsub.projectName= #Set the template to resolve the order key gg.handler.pubsub.orderingKeyMappingTemplate= gg.handler.pubsub.format=json_row gg.handler.pubsub.format.metaColumnsTemplate=${objectname[table]},${optype[op_type]},${timestamp[op_ts]},${currenttimestamp[current_ts]},${position[pos]}
親トピック: Google Pub/Sub
9.2.23.8 Google PubSub依存性
Google PubSubクライアント・ライブラリは、Google PubSubとの統合に必要です。Maven座標は次のとおりです。
Maven groupId: com.google.cloud
Maven artifactId: google-cloud-pubsub
api-common-2.31.0.jar guava-33.1.0-jre.jar protobuf-java-util-3.25.3.jar listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar proto-google-iam-v1-1.34.0.jar threetenbp-1.6.9.jar google-cloud-pubsub-1.129.3.jar opencensus-proto-0.2.0.jar google-http-client-gson-1.44.1.jar grpc-protobuf-lite-1.62.2.jar grpc-util-1.62.2.jar javax.annotation-api-1.3.2.jar checker-qual-3.42.0.jar error_prone_annotations-2.26.1.jar gax-grpc-2.48.0.jar httpcore-4.4.16.jar proto-google-common-protos-2.39.0.jar google-auth-library-oauth2-http-1.23.0.jar opencensus-contrib-http-util-0.31.1.jar protobuf-java-3.25.3.jar proto-google-cloud-pubsub-v1-1.111.3.jar grpc-api-1.62.2.jar perfmark-api-0.27.0.jar gax-2.48.0.jar jsr305-3.0.2.jar conscrypt-openjdk-uber-2.5.2.jar failureaccess-1.0.2.jar grpc-inprocess-1.62.2.jar grpc-grpclb-1.62.2.jar grpc-netty-shaded-1.62.2.jar google-http-client-1.44.1.jar grpc-core-1.62.2.jar j2objc-annotations-3.0.0.jar commons-codec-1.16.1.jar gson-2.10.1.jar grpc-auth-1.62.2.jar google-auth-library-credentials-1.23.0.jar grpc-services-1.62.2.jar grpc-context-1.62.2.jar animal-sniffer-annotations-1.23.jar opencensus-api-0.31.1.jar gax-httpjson-2.48.0.jar auto-value-annotations-1.10.4.jar grpc-stub-1.62.2.jar annotations-4.1.1.4.jar grpc-xds-1.62.2.jar grpc-alts-1.62.2.jar grpc-googleapis-1.62.2.jar httpclient-4.5.14.jar re2j-1.7.jar grpc-protobuf-1.62.2.jar
親トピック: Google Pub/Sub