提问人:Piyush Maheshwari 提问时间:11/10/2023 最后编辑:Piyush Maheshwari 更新时间:11/15/2023 访问量:38
使用 Java SDK 将消息发布到 SQS 时自定义请求超时 - 缩短 SQS 消息处理时间:最大限度地减少 10 秒后的重试
Customize Request Timeout while publish message to SQS using java sdk - Reducing SQS Message Processing Time: Minimizing Retries after 10 Seconds
问:
我们在 Java Spring Boot 项目中使用 SQS。向 SQS 发布消息时,大多数消息的处理时间为 <=300ms。但是,有些请求花费了 50 秒以上。经过初步调查,我们发现 SDK 会重试失败的请求,需要 50 秒将其标记为失败,然后才能开始重试。在大多数情况下,在初次重试后的 <=300 毫秒内重新处理消息(导致总时间约为 50,300 毫秒)。
我们的目标是将请求时间缩短到 10 秒,确保在失败的情况下最多 10 秒后重试。我们已经尝试了一些配置。
如果您需要进一步的帮助或具体细节,请随时询问!
@Bean
public ClientConfiguration getClientConfig() {
ClientConfiguration clientConfig = new ClientConfiguration();
clientConfig = clientConfig.withSocketTimeout(7000);
clientConfig = clientConfig.withRequestTimeout(9000);
clientConfig = clientConfig.withConnectionTimeout(11000);
clientConfig = clientConfig.withClientExecutionTimeout(13000);
return clientConfig;
}
@Bean
public AmazonSQS amazonSqs() {
String region = !StringUtils.isEmpty(sqsRegion) ? sqsRegion : AWSConfigConstants.AWS_SQS_REGION;
return AmazonSQSClientBuilder.standard()
.withRegion(region)
.withClientConfiguration(getClientConfig())
.withCredentials(InstanceProfileCredentialsProvider.createAsyncRefreshingProvider(true)).build();
}
@Autowired
private AmazonSQS amazonSQS;
private String queueName=DEFAULT_QUEUE_NAME;
public void send(String message){
long startMillis1 = System.currentTimeMillis();
SendMessageResult result = amazonSQS.sendMessage(queueName,message);
long startMillis2 = System.currentTimeMillis();
long totalTimeTaken=(startMillis2-startMillis1);
}
我使用的 SQS java sdk 依赖项
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-sqs</artifactId>
<version>1.12.262</version>
</dependency>
Java 版本 = 17
我关注的参考链接
在 GitHub 上也问了同样的问题
答: 暂无答案
下一个:如何在请求级别设置TLS版本?
评论