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.