מספר קריאות ל-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
.