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

การเรียก 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 อยู่ในขอบเขต