Как использовать CompletableFuture со статусом задания AWS Glue? - PullRequest
0 голосов
/ 15 мая 2018

У меня есть требование, при котором мне необходимо получить статус сканера AWS Glue, который является асинхронным запросом, и в зависимости от того, когда задания будут выполнены, я вызову определенные события.Подвох в том, что я не хочу использовать опрос.Если посмотреть дальше, документы AWS предлагают использовать объект CompletableFuture для обработки асинхронных запросов в AWS.Но когда я пытаюсь использовать, я не могу сформировать CompletableFuture объект, так как он дает мне несоответствие типов.У меня есть этот код:

GetCrawlerMetricsRequest metricsRequest =
        new GetCrawlerMetricsRequest().withCrawlerNameList(Arrays.asList("myJavaCrawler"));
    GetCrawlerMetricsResult jsonOb = awsglueClient.getCrawlerMetrics(metricsRequest);
    CompletableFuture<GetCrawlerMetricsResult> futureResponse = CompletableFuture<GetCrawlerMetricsResult>awsglueClient.getCrawlerMetricsAsync(metricsRequest);

Но futureResponse объект показывает ошибку с указанием FutureTask cannot be casted to CompletableFuture.

Я следую подходу, данному здесь

Я не уверен, как я могу заставить это работать.Основываясь на этом futureResponse объекте, я могу затем использовать функцию .whenApply, чтобы вызвать определенное задание, которое я хочу выполнить, например, отправить вышеуказанный ответ в очередь Кафки.Есть идеи?

1 Ответ

0 голосов
/ 17 мая 2018

Похоже, что вы используете AWS SDK v1, когда упомянутый вами документ показывает, как это сделать, используя v2 (который имеет статус «Предварительный просмотр», поэтому он не рекомендуется для использования). Вот документ , показывающий, как выполнять асинхронные вызовы в v1

. Для вашего случая использования я бы рекомендовал другой подход.Клей публикует несколько типов событий , и одним из них является "Crawler Succeeded".Таким образом, вы можете создать правило CloudWatch , чтобы перехватывать эти события и запускать лямбду, которая сделает вызов для запуска соответствующей работы

...