gpt4 book ai didi

java - 如何在 aws lambda 中关闭 aws 客户端

转载 作者:行者123 更新时间:2023-12-04 07:35:49 24 4
gpt4 key购买 nike

我正在尝试使用 Java 正确编写一个 aws lambda,它将使用 aws sdk SqsClient 和 SnsClient。我看到这些客户端实现了 close()方法,并且在不再需要客户端时调用此方法通常是一个好习惯。以及 lambda ( https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html ) 建议的最佳实践

Initialize SDK clients and database connections outside of the function handle


所以,我的问题是:aws lambda 是否足够聪明以自动关闭 aws sdk 客户端,以便我可以编写这样的内容,并且不必担心在 lambda 容器关闭时显式关闭客户端。
public class SQSProcessingHandler implements RequestHandler<String, String> {

private SqsClient sqsClient = SqsClient.create();

@Override
public String handleRequest(final String event, final Context context) {
ListQueuesResponse response = sqsClient.listQueues();
return response.queueUrls().stream().collect(Collectors.joining(","));
}
}
如果仍然需要显式关闭,请您帮我找出我如何知道 lambda 容器即将关闭,以便我应该调用 close()在客户端?

最佳答案

对于最佳实践,除非有理由不这样做,否则您应该明确关闭客户端。

Service clients in the SDK are thread-safe. For best performance,treat them as long-lived objects. Each client has its own connectionpool resource that is released when the client is garbage collected.The clients in the AWS SDK for Java 2.0 now extend the AutoClosableinterface. For best practices, explicitly close a client by callingthe close method.


不明确关闭客户端的原因:
为获得最佳性能,请勿显式关闭客户端。这是因为未关闭的客户端通过在打开后保留在可重用的连接池中来维护与服务的套接字。因此,当再次调用 lambda 时,客户端可能会被重用。即使您没有明确关闭客户端,Lambda 也可以并且会在稍后自动为您关闭客户端。
引用: https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/creating-clients.html

关于java - 如何在 aws lambda 中关闭 aws 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67741257/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com