Мы используем Spring Cloud Streams, которые слушают тему Kafka и вызывают службу отдыха. Мы также реализуем настраиваемый StreamRetryTemplate, чтобы указать, какие ошибки мы считаем исправляемыми, а какие - нет. Я не могу получить согласованные результаты между тем, как это работает во время выполнения, и тем, как это работает в интеграционных тестах.
Я проверил в режиме отладки, что исключение генерируется правильно и что RetryTemplate вводится правильно, но, похоже, он просто не используется в моих интеграционных тестах.
@EnableBinding(Sink::class)
class MyListener(private val myService: Service) {
@StreamListener(Sink.Input)
fun consume(@Payload msg: MyMessage) = myService.process(msg)
@SteamRetryTemplate
fun getRetryTemplate() = RetryTemplate()
}
Когда я запускаю это приложение и myService выдает исключение, я ожидаю, что он будет повторен, и он делает это отлично. Но когда я пишу интеграционные тесты с сервером Wiremock и вызываю исключение myService, он не пытается повторить попытку. У меня есть операторы assert, чтобы проверить, сколько раз была достигнута моя конечная точка wiremock.
Мне что-то не хватает специально для повторных попыток работы в интеграционных тестах?