Lang andauernde Vorgänge (LROs)

Mehrere API-Aufrufe führen zu lang andauernden Vorgängen. Diese verfolgen den Status eines Jobs, der über einen längeren Zeitraum ausgeführt wird, sodass ein blockierender RPC nicht wünschenswert ist.

OperationFuture-Klasse

Die naheliegendste Methode zur 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 OfflineUserDataJobServiceClient im Geltungsbereich liegt.