Operasi yang berjalan lama (LRO)

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.