การดําเนินการระยะยาว (LRO)

การเรียก API หลายครั้งจะส่งผลให้เกิดการดำเนินการที่ใช้เวลานาน การดำเนินการเหล่านี้จะติดตามสถานะของงานที่ดําเนินการในช่วงระยะเวลาที่นานกว่า อย่างเช่นการมี RPC ที่บล็อกไม่เป็นที่ต้องการ

คลาสการดำเนินการในอนาคต

วิธีที่ชัดเจนที่สุดในการโต้ตอบกับ 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 อยู่ในขอบเขตเท่านั้น