使用代理接口@LambdaFunction和异步客户端异步调用lambda函数



我想从java应用程序远程调用我们的远程lambda微服务。我有一个问题,lambda可能会超时更长的处理时间,在这种情况下,我想异步调用lambda,这样我就可以用比lambda的15分钟限制更长的自定义超时来配置调用。

这是我的代码,

AWSLambda awsLambda;
switch (invocationType) {
case Event:
awsLambda = AWSLambdaAsyncClientBuilder.defaultClient();
break;
case RequestResponse:
default:
awsLambda = AWSLambdaClientBuilder.defaultClient();
break;
}
service = LambdaInvokerFactory.builder()
.lambdaClient(awsLambda)
.build(ILambdaProxyService.class);

这是我的ILambdaProxyService.java,

public interface ILambdaProxyService {
@LambdaFunction(invocationType = InvocationType.RequestResponse)
ServerResponse invoke(ServerRequest request);
@LambdaFunction(invocationType = InvocationType.Event)
ServerResponse invokeAsync(ServerRequest request);
}

如何使用"invokeAsync"进行异步调用这样我就可以获得回调处理程序或Future对象,只需等待长时间运行的lambda完成或自定义超时耗尽。

不一定能理解这里的意思:

这样我就可以配置自定义超时超过λ的15分钟限制

如果你的目标是让你的Lambda运行超过15分钟(并最终同步或异步获得结果(,那么你不能,AWS Lambda的运行时间有15分钟的硬性限制(无论客户端配置如何(。对于长时间运行的进程,您可以使用其他解决方案(StepFunctions、EC2、Fargate…((您可以在这里找到一些提示(。

最新更新