我想在 Spring 应用程序中为 sqs 设置退避策略。我所做的是:
@Bean
public ConnectionFactory sqsConnectionFactory() {
PredefinedBackoffStrategies.ExponentialBackoffStrategy backoffStrategy = new PredefinedBackoffStrategies.ExponentialBackoffStrategy(3, 27);
RetryPolicy retryPolicy = new RetryPolicy(PredefinedRetryPolicies.DEFAULT_RETRY_CONDITION, backoffStrategy, PredefinedRetryPolicies.DEFAULT_MAX_ERROR_RETRY, false);
return SQSConnectionFactory.builder()
.withRegion(Region.getRegion(Regions.fromName(region)))
.withAWSCredentialsProvider(new DefaultAWSCredentialsProviderChain())
.withClientConfiguration(new ClientConfiguration().withRetryPolicy(retryPolicy))
.build();
}
,但没有效果。@JmsListener
我通过简单的方法从 SQS 队列中读取。在此方法中调用其他 api。这个 api 返回我 404 错误。然后是重试,但它是即时重试。为什么会这样,如何使用指数退避策略正确配置它?它正在重试,但没有指数延迟时间。