Моно без задержки - PullRequest
       25

Моно без задержки

0 голосов
/ 04 августа 2020

У меня есть следующий фрагмент кода, который, как я думал, задержит моно, я просто пытаюсь повторить попытку с интервалом отсрочки

    private Mono<ThreeDSServerRedisDto> loadRedisDtoAndRetry(FrictionlessInfo frictionlessInfo, long retryNumber) {
        int maxRetries = 10;
        if (retryNumber >= maxRetries) {
            log.info("Unable to load the data after {} attempts aborting", maxRetries);
            return Mono.empty();
        }
        long delayFactor = (long) (Math.pow(retryNumber, 2)*20L);
        if (retryNumber > 0 ){
            log.info("Load data attempt {}, delayFactor {}s", retryNumber, delayFactor);
        }
        return Mono
                .delay(Duration.ofSeconds(delayFactor))
                .then(threeDSRedisService.loadByToken(frictionlessInfo.getThreeDSv2Token()))
                .switchIfEmpty(loadRedisDtoAndRetry(frictionlessInfo, retryNumber + 1));
    }

Однако, похоже, это не так задержка чего-либо. Почему не происходит задержка и как лучше всего повторить попытку с экспоненциальным откатом, когда моно пуст.

...