java - 从另一个 Lambda 函数异步启动 AWS java Lambda 函数

标签 java amazon-web-services asynchronous lambda

我的目标是从另一个 Lambda 函数中启动一个 Lambda 函数。具体来说,我希望第二个功能开始,让第一个功能独立于第二个功能完成。无需向第一个函数返回响应。

我花了很多时间查看示例以及 AWS 文档。

我能够成功启动第二个功能,但无法使其独立于第一个功能运行。第一个函数总是在完成之前等待第二个函数完成。

我使用这个代码:

AWSLambdaAsync lambda = AWSLambdaAsyncClientBuilder.standard().withRegion(Regions.EU_WEST_1).build();
    InvokeRequest req = new InvokeRequest().withFunctionName(functionName).withPayload(jsonStuff);
    // req.setInvocationType(InvocationType.Event);

    Future<InvokeResult> future_res = lambda.invokeAsync(req);

这不会启动第二个函数(有或没有设置调用类型)。

如果我包含这段代码:

try {
        InvokeResult thisResult = future_res.get();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ExecutionException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

然后第二个函数被触发,但第一个函数在继续之前等待第二个函数完成。

如何在不等待第二个函数完成的情况下启动它。目前,第一个功能完成所需的时间为 2 秒(第一个功能在不启动第二个功能的情况下需要 4 秒才能完成)。

最佳答案

您可以向 Amazon SNS 发布消息。当您配置主题时,选择 AWS Lambda 并输入要触发的 lambda 的 ARN。

甚至还有一个 Amazon How To for triggering Lambda from SNS .

这是我个人会做的事情:这里有更多的基础设施,但它甚至进一步分离了 Lambda A 和 Lambda B 的关注点(因为如果从现在起 6 个月后,您意识到 Lambda B 必须是传统的微服务?简单:只需重新配置 SNS 主题。Lambda A 不必知道)。

关于java - 从另一个 Lambda 函数异步启动 AWS java Lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48488838/

相关文章:

java - 如何在 Selenium 的帮助下单击此下拉菜单?

linux - Amazon Linux 上的 SSLSetup : SSL Error, 提供了多个证书

使用执行器服务的Java异步方法调用

java - 使用 Java 扫描器仅计算文件中的单词数

java - 输出总是打印出else语句

amazon-web-services - AWS CloudFormation 自定义资源不起作用

javascript - AWS 认知 : How should I handle PasswordResetRequiredException

c# - 如果我等待一个已经在运行或运行的任务,会发生什么?

javascript - 如何使用 Firebase 对 HTML 进行异步更新

java - 重载 Java 函数并确定执行哪一个