我有一个需求,需要获取AWS Glue crawler的状态,这是一个异步请求,根据作业完成的时间,我会触发某些事件。这里的问题是我不想使用轮询。进一步看,亚马逊网络服务文档建议使用CompletableFuture对象来处理亚马逊网络服务中的异步请求。但当我尝试使用时,我无法形成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队列中。有什么想法吗?
发布于 2018-05-17 09:07:19
当你提到的文档显示了如何使用v2 (它具有“开发人员预览”状态,因此不建议用于生产)时,您似乎正在使用AWS SDK v1。演示如何在v1中进行异步调用的Here is a doc
对于您的用例,我会推荐另一种方法。粘合posts few types of events,其中之一是“爬虫成功”。因此您可以创建一个CloudWatch rule来捕获这些事件并触发一个lambda,它将发出一个调用以启动相应作业
https://stackoverflow.com/questions/50355479
复制相似问题