我有一个要求,我需要获取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
。
我正在遵循给定here
的方法我不知道如何才能使这项工作成功。基于此futureResponse
对象,我可以使用.whenApply
函数来触发我想要执行的特定作业,例如将上述响应推送到Kafka队列中。有什么想法吗?
答案 0 :(得分:0)
当您提到的文档显示如何使用v2(具有&#39;开发人员预览&#39;状态,因此不建议用于生产)时,您似乎正在使用AWS SDK v1。 Here is a doc显示了如何在v1中进行异步调用
对于您的用例,我会推荐另一种方法。胶水posts few types of events,其中一个是&#34; Crawler Succeeded&#34;。因此,您可以创建一个CloudWatch rule来捕获这些事件并触发一个lambda,它将调用以启动适当的工作