我正在使用Java中的AWS Lambda wriiten编写一段代码,需要通过REST调用第三方系统(火与忘记)。
根据这种方法,每次请求来自用户时,都会执行一个新的Lambda,它将建立连接以进行第三方呼叫。
是否有任何alernate方法来克服连接建立。如果我可以通过API网关或其他连接池重定向我的呼叫,我可以使用一些连接池吗?
提前致谢!
答案 0 :(得分:1)
执行Lambda函数后,AWS Lambda维护执行上下文一段时间以预期另一个Lambda函数调用
[...]
Lambda函数代码中的任何声明(在处理程序代码之外,请参阅编程模型)仍然初始化,在再次调用函数时提供额外的优化。例如,如果Lambda函数建立数据库连接,而不是重新建立连接,则在后续调用中使用原始连接。
如果在短时间内重复调用Lambda函数(我认为它是300秒),这是相关的。如果不经常调用它,那么您每次都会获得一个新容器,并且需要重新建立连接。
在Java实现的情况下,"在处理程序代码之外"包括对象构造函数。例如,在this code中,我在Lambda处理程序类的构造函数中创建了几个服务,并将它们存储为成员变量。
你也可以做懒惰的实例化,我认为这与非Java实现更相关(Java给你构造函数,所以使用它们!)。
需要注意的一点是,当Lambda处于非活动状态时,底层连接可能会超时。因此,请确保在使用前测试连接(在数据库连接池的情况下,这很简单:在结帐时进行"测试"查询,如果连接,则池将替换连接。不再有效。)