Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从另一个Lambda函数异步启动AWS java Lambda函数_Java_Amazon Web Services_Asynchronous_Lambda - Fatal编程技术网

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

从另一个Lambda函数异步启动AWS java Lambda函数,java,amazon-web-services,asynchronous,lambda,Java,Amazon Web Services,Asynchronous,Lambda,我的目标是从另一个Lambda函数中启动一个Lambda函数。具体来说,我希望第二个函数启动,让第一个函数独立于第二个函数完成。无需向第一个函数返回响应 我花了很多时间研究示例和AWS文档 我能够成功启动第二个功能,但无法独立于第一个功能运行。第一个函数总是在第二个函数完成之前等待它完成 我使用这个代码: AWSLambdaAsync lambda = AWSLambdaAsyncClientBuilder.standard().withRegion(Regions.EU_WEST_1).bui

我的目标是从另一个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);
然后启动第二个函数,但第一个函数等待第二个函数完成,然后继续


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

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

甚至还有一个


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

参考此:。将InvocationType设置为Event。默认情况下,调用API采用RequestResponse调用类型。非常感谢。我试过了,但没能成功。我想我的问题是调用publish:snsClient.publish(“arn:aws:sns:eu-west-1:xxxx…xxxx”,jsonStuff)时传递的消息(jsonStuff)的json格式;-有关于在哪里可以看到示例(java)的提示吗?谢天谢地,我终于弄明白了。需要创建接收SNS事件作为输入类型的lambda函数。然后将json输入消息作为字符串传递(使用Gson)以进行转换。
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();
    }