長時間実行オペレーション(LRO)
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
API の複数の呼び出しでは長時間実行オペレーションが返されます。これらの API によって、
長時間にわたって実行されるジョブの
RPC のブロックは望ましくありません。
OperationFuture クラス
LRO とやり取りする最もわかりやすい方法は、
OperationFuture
クラス。これを使用する場合は、サービス クライアントが破棄されていないことを確認してください。
非推奨:
private void doSomething() {
OperationFuture<Empty, Empty> future = startLongRunningOperation(jobName);
future.get();
}
private OperationFuture<Empty, Empty> startLongRunningOperation(String jobToStart)
throws UnsupportedEncodingException {
try (OfflineUserDataJobServiceClient offlineUserDataJobServiceClient =
googleAdsClient.getLatestVersion().createOfflineUserDataJobServiceClient()) {
// Issues an asynchronous request to run the offline user data job for executing
// all added operations.
return offlineUserDataJobServiceClient.runOfflineUserDataJobAsync(jobToStart);
}
}
推奨:
private void doSomethingElse() {
try (OfflineUserDataJobServiceClient offlineUserDataJobServiceClient =
googleAdsClient.getLatestVersion().createOfflineUserDataJobServiceClient()) {
OperationFuture<Empty, Empty> future = startLongRunningOperation(offlineUserDataJobServiceClient, jobName);
future.get();
}
}
private OperationFuture<Empty, Empty> startLongRunningOperation(String jobToStart)
throws UnsupportedEncodingException {
offlineUserDataJobServiceClient.runOfflineUserDataJobAsync(jobToStart);
}
OperationFuture
クラスは、
OfflineUserDataJobServiceClient
はサポート範囲内です。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-08-21 UTC。
[null,null,["最終更新日 2025-08-21 UTC。"],[[["\u003cp\u003eSeveral API calls initiate long-running operations, tracked by jobs that execute over time, making blocking RPCs undesirable.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eOperationFuture\u003c/code\u003e class facilitates interaction with long-running operations, but requires the service client to remain active during its usage.\u003c/p\u003e\n"],["\u003cp\u003eDirectly using \u003ccode\u003eOperationFuture\u003c/code\u003e within a method without ensuring the service client's lifespan can lead to issues.\u003c/p\u003e\n"],["\u003cp\u003eIt's recommended to utilize \u003ccode\u003eOperationFuture\u003c/code\u003e within the scope of the service client, as demonstrated in the "Recommended" code example, to prevent premature client destruction.\u003c/p\u003e\n"]]],[],null,["# Long-running operations (LROs)\n\nSeveral calls to the API return long-running operations. These track the status\nof a job which executes over an extended period of time, such that having a\nblocking RPC is not desirable.\n\nOperationFuture class\n---------------------\n\nThe most obvious way to interact with LROs is with the\n[`OperationFuture`](//googleapis.dev/java/gax/latest/com/google/api/gax/longrunning/OperationFuture.html) class. If you use this, make sure that the service client is not destroyed.\n\nNot recommended: \n\n private void doSomething() {\n OperationFuture\u003cEmpty, Empty\u003e future = startLongRunningOperation(jobName);\n future.get();\n }\n\n private OperationFuture\u003cEmpty, Empty\u003e startLongRunningOperation(String jobToStart)\n throws UnsupportedEncodingException {\n try (OfflineUserDataJobServiceClient offlineUserDataJobServiceClient =\n googleAdsClient.getLatestVersion().createOfflineUserDataJobServiceClient()) {\n // Issues an asynchronous request to run the offline user data job for executing\n // all added operations.\n return offlineUserDataJobServiceClient.runOfflineUserDataJobAsync(jobToStart);\n }\n }\n\nRecommended: \n\n private void doSomethingElse() {\n try (OfflineUserDataJobServiceClient offlineUserDataJobServiceClient =\n googleAdsClient.getLatestVersion().createOfflineUserDataJobServiceClient()) {\n OperationFuture\u003cEmpty, Empty\u003e future = startLongRunningOperation(offlineUserDataJobServiceClient, jobName);\n future.get();\n }\n }\n\n private OperationFuture\u003cEmpty, Empty\u003e startLongRunningOperation(String jobToStart)\n throws UnsupportedEncodingException {\n offlineUserDataJobServiceClient.runOfflineUserDataJobAsync(jobToStart);\n }\n\nNotice how the `OperationFuture` class is only used while the\n`OfflineUserDataJobServiceClient` is in scope."]]