العمليات طويلة الأمد (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 ضمن النطاق.