Beberapa panggilan ke API menampilkan operasi yang berjalan lama. Tag ini akan melacak status dari tugas yang dijalankan dalam jangka waktu yang panjang, seperti memiliki memblokir RPC tidak diinginkan.
Class OperationFuture
Cara paling jelas untuk berinteraksi dengan LLO adalah dengan
Class OperationFuture
. Jika Anda menggunakan ini, 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.