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