چندین تماس به 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
در محدوده است.