使用 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

提问人:Piyush Maheshwari 提问时间:11/10/2023 最后编辑:Piyush Maheshwari 更新时间:11/15/2023 访问量:38

问:

我们在 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 上也问了同样的问题

java amazon-web-services httpclient amazon-sqs spring-jms

评论


答: 暂无答案