【问题标题】:How to connect onprem oracle DB from Micronaut based AWS Lambda如何从基于 Micronaut 的 AWS Lambda 连接 onprem oracle DB
【发布时间】:2022-06-14 16:12:42
【问题描述】:
我正在尝试使用 micronaut 进行基于 Java 的无服务器 (AWS lambda) 开发。
第一个用例是连接和查询本地 oracle DB(用于只读操作)以丰富数据,然后调用一些肥皂服务。
这个问题是关于在本地进行 Oracle DB 调用。我在 Internet 上看到了一些基于连接池的方法(JDBC-hikari 等)的参考资料,这些参考资料可能不需要 lambda 应用程序。那么使用 micronaut 连接/调用/关闭 oracle 连接的最佳/推荐方式是什么?
请提出建议。
【问题讨论】:
标签:
micronaut
micronaut-data
micronaut-aws
【解决方案1】:
尽管为此需要考虑很多网络因素,但我认为您具体询问的是连接池。
您认为您的 Lambda 函数可能不会从拥有许多打开的连接中受益是正确的。根据工作量,您实际上可能只需要一个。
我建议在 Lambda 初始化阶段建立连接。然后,连接将在调用之间持续存在。要在 Lambda 执行环境终止之前关闭连接,您可以注册运行时关闭挂钩。
此 AWS GitHub 存储库中有一个示例 graceful-shutdown-with-aws-lambda。
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
System.out.println("[runtime] ShutdownHook triggered");
System.out.println("[runtime] Cleaning up");
// perform actual clean up work here.
try {
Thread.sleep(200);
} catch (Exception e) {
System.out.println(e);
}
System.out.println("[runtime] exiting");
System.exit(0);
}
});