AWS Lambda

时间:2017-06-17 04:58:02

标签: java concurrency aws-lambda

假设我有这样的代码。

public class MyHandler {
    private Foo foo;
    public void handler(InputStream request, OutputStream response, Context context) {
       ...
    }
}

Foo foo 负责创建池化数据库连接。

我试图了解它如何与AWS Lambda一起使用。如果我理解正确, foo 将在多个调用之间共享。第一个需要花费更多时间,因为它必须加载到容器中,后续的更快,因为 foo 已经初始化。在我的处理程序在一段时间不活动后被踢出之前就是这种情况。

因此,对于顺序调用,它是否会使用相同的对象,是否可以访问先前函数调用中创建的/ tmp?

并行调用怎么样?它是否会复制整个容器,因为根据文档,每个lambda函数应该在自己的容器,自己的资源和自己的/ tmp中执行?

如果处理程序在不活动后被踢出,是否有Java中的回调函数可以调用以关闭所有打开的池连接?

1 个答案:

答案 0 :(得分:2)

  

因此,对于顺序调用,是否会使用相同的对象   有权访问早期函数调用中创建的/ tmp吗?

是的,它会使用相同的对象。是的,它可以访问在早期函数调用中创建的new BigNumber

  

并行调用怎么样?它会复制整个   容器,因为根据文档,每个lambda函数都应该   在自己的容器中执行,自己的资源和自己的/ tmp?

并行调用将在单独的容器中进行。单个容器一次只处理一次调用。所以是的,整个容器将被复制,每个容器都有自己的/tmp

  

如果处理程序在不活动后被踢出,是否有   Java中的回调函数,我可以调用它来关闭所有打开的函数   汇集连接?

没有没有可用于处理此问题的回调。当容器由于不活动而最终被移除时,您的功能将处于挂起状态。