假设我有这样的代码。
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中的回调函数可以调用以关闭所有打开的池连接?
答案 0 :(得分:2)
因此,对于顺序调用,是否会使用相同的对象 有权访问早期函数调用中创建的/ tmp吗?
是的,它会使用相同的对象。是的,它可以访问在早期函数调用中创建的new BigNumber
。
并行调用怎么样?它会复制整个 容器,因为根据文档,每个lambda函数都应该 在自己的容器中执行,自己的资源和自己的/ tmp?
并行调用将在单独的容器中进行。单个容器一次只处理一次调用。所以是的,整个容器将被复制,每个容器都有自己的/tmp
。
如果处理程序在不活动后被踢出,是否有 Java中的回调函数,我可以调用它来关闭所有打开的函数 汇集连接?
没有没有可用于处理此问题的回调。当容器由于不活动而最终被移除时,您的功能将处于挂起状态。