장기 실행 작업 (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님이 범위 내에 있습니다.