פעולות ארוכות (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.