العمليات طويلة الأمد (LRO)

تؤدي طلبات متعددة إلى واجهة برمجة التطبيقات إلى إرجاع عمليات طويلة المدى. تتتبع هذه حالة الوظيفة التي يتم تنفيذها على مدار فترة زمنية طويلة، بحيث يكون حظر RPC أمر غير مرغوب فيه.

فئة العملية المستقبلية

إنّ الطريقة الأكثر وضوحًا للتفاعل مع 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 ضِمن النطاق.