Beberapa panggilan ke API menampilkan operasi yang berjalan lama. Fungsi ini melacak status tugas yang dijalankan dalam jangka waktu yang lama, sehingga memiliki RPC pemblokiran tidak diinginkan.
Class OperationFuture
Cara paling mudah untuk berinteraksi dengan LRO adalah dengan
class OperationFuture
. Jika Anda menggunakannya, pastikan bahwa klien layanan tidak dihancurkan.
Tidak direkomendasikan:
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);
}
}
Direkomendasikan:
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);
}
Perhatikan bagaimana class OperationFuture
hanya digunakan saat
OfflineUserDataJobServiceClient
berada dalam cakupan.