gpt4 book ai didi

java - AWS 的 AsyncClients in Java 线程安全且持久吗?

转载 作者:行者123 更新时间:2023-11-29 05:15:18 24 4
gpt4 key购买 nike

我打算向 SNS 发送消息,然后我发现了一个 AmazonSNSClient。我试过了。

AWSCredentials credentials = new DefaultAWSCredentialsProviderChain()
.getCredentials();
AmazonSNSClient client = new AmazonSNSClient(credentials);

我让我的服务实例持有这个客户端以使其永远存在,但在某个时刻,错误开始发生。

com.amazonaws.AmazonServiceException: 
The security token included in the request is expired
(Service: AmazonSNS; Status Code: 403; Error Code: ExpiredToken;
Request ID: d4bf427c-5b60-568b-a91c-0ea88356bc69)

显然,这是因为 AmazonSNSClient 的设计目的不是为了保持活力和多次使用。 AmazonSNSAsyncClient 似乎适合这种用法。

我的问题是 AmazonSNSAsyncClient 是线程安全的吗? AmazonSNSAsyncClient 是否预期在 token 请求未过期的情况下被多次使用?

感谢您阅读本文。

我问 AWS 支持 DynamoDB 上类似的问题,说,我必须使用 AWSCredentials 而不是 AWSCredentialsProvider。虽然这不是关于 SNSClient 的答案,但我认为它可能有效。

最佳答案

通过使用“new DefaultAWSCredentialsProviderChain().getCredentials()”,您可以在那个时间点拍摄 AWS 凭证的快照并将它们提供给 SNS 客户端。如果您发现在某个时间点后收到 ExpiredToken 错误,很可能是因为您依赖于 EC2 角色提供的轮换凭证。

不要将 AWSCredentials 传递到 SNS 客户端,而是尝试传递 DefaultAWSCredentialsProviderChain 的实例。这应该会在凭据过期时自动刷新凭据。

异步客户端也会遇到同样的问题。

关于java - AWS 的 AsyncClients in Java 线程安全且持久吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26772257/

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