Стратегия отката, установленная в ClientConfiguration
в вашем коде, используется для обеспечения задержки попыток клиента AWS подключиться к Сервисам AWS.Это означает, что выбранная вами стратегия будет использоваться, если (скажем, по какой-то причине) клиенту AWS SQS не удастся подключиться к сервису AWS SQS для получения сообщения (или опроса новых сообщений).Если такой сбой происходит, следующая попытка должна быть предпринята после задержки, предусмотренной сконфигурированным ExponentialBackoffStrategy
.Для получения более подробной информации см. Официальную документацию здесь .
Причина немедленной повторной попытки
В вашем случае сообщение уже было получено из службы SQS базовым клиентом (то естьиспользуется Spring's @JmsListener
).Неудача для этого самого шага использовала бы ExponentialBackoffStrategy
.Сбой после этого (например, исключение, генерируемое после 404) вызовет подтверждение сбоя службе SQS, и служба немедленно сделает сообщение видимым для потребления снова.
Как связать стратегию отката сredelivery
К сожалению, эта стратегия не может быть связана с ошибками потребления сообщений.Задержка, которая требуется, на самом деле является спецификацией JMS 2.0 redelivery-delay .Но поставщик SQS JMS, который вы, похоже, используете, - это https://github.com/awslabs/amazon-sqs-java-messaging-lib, который является реализацией JMS 1.1.Ниже приведены те же цитаты из их документации:
Этот проект построен на основе AWS SDK для Java с использованием Amazon SQS в качестве поставщика JMS (как определено в спецификации 1.1)
Кроме того, SQS не имеет ничего похожего на redelivery-delay
в своей политике переадресации (только ассоциация Maximum Receives
и Dead Letter Queue
).Таким образом, возможный обходной путь будет заключаться в том, чтобы самостоятельно обрабатывать сбои и устанавливать определенные задержки сообщений (больше здесь ) постепенно для каждой повторной очереди (это может включать обработку числа повторов в заголовках, вероятно, и не использовать JMS).).Обратите внимание, что это может повлечь дополнительные расходы.
С другой стороны: Добавление задержки в очередь или таймаута видимости не поможет в задержках между сбоями при чтении сообщений.