عملیات طولانی مدت (LROs)

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