Lang andauernde Vorgänge (LROs)

Bei mehreren API-Aufrufen werden Vorgänge mit langer Ausführungszeit zurückgegeben. Diese verfolgen den Status eines Jobs, der über einen längeren Zeitraum ausgeführt wird, sodass RPC zu blockieren, ist nicht erwünscht.

Klasse "OperationFuture"

Die naheliegendste Methode für die Interaktion mit LROs ist die Klasse OperationFuture. Achten Sie in diesem Fall darauf, dass der Dienstclient nicht gelöscht wird.

Nicht empfohlen:

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);
  }
}

Empfohlen:

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);
}

Beachten Sie, dass die Klasse OperationFuture nur verwendet wird, während die OfflineUserDataJobServiceClient fällt in den Zuständigkeitsbereich.