Я хочу настроить стратегию отсрочки для sqs в приложении Spring. Что я сделал:
@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();
}
, но это не имеет никакого эффекта. Я читаю из очереди SQS простым методом @JmsListener
. В этом методе есть вызов другого API. Этот API возвращает мне ошибку 404. Затем есть повторная попытка, но это мгновенная повторная попытка. Почему так, как правильно настроить это с экспоненциальной стратегией отката? Это повторная попытка, но не с экспоненциальной задержкой.