@Override public Mono<Void> doRetry(Mono<Void> executionResult, Event event) { return executionResult .retryBackoff(retryBackoff.getMaxRetries(), retryBackoff.getFirstBackoff(), MAX_BACKOFF, retryBackoff.getJitterFactor()) .doOnError(throwable -> LOGGER.error("listener {} exceeded maximum retry({}) to handle event {}", mailboxListener.getClass().getCanonicalName(), retryBackoff.getMaxRetries(), event.getClass().getCanonicalName(), throwable)) .then(); } }
@Test void buildShouldSuccessWhenZeroMaxRetries() { RetryBackoffConfiguration retryBackoff = RetryBackoffConfiguration.builder() .maxRetries(0) .firstBackoff(DEFAULT_FIRST_BACKOFF) .jitterFactor(DEFAULT_JITTER_FACTOR) .build(); assertThat(retryBackoff.getMaxRetries()) .isEqualTo(0L); }
@Test void buildShouldReturnCorrespondingValues() { RetryBackoffConfiguration retryBackoff = RetryBackoffConfiguration.builder() .maxRetries(5) .firstBackoff(Duration.ofMillis(200)) .jitterFactor(0.6) .build(); SoftAssertions.assertSoftly(softly -> { softly.assertThat(retryBackoff.getJitterFactor()) .isEqualTo(0.6); softly.assertThat(retryBackoff.getMaxRetries()) .isEqualTo(5); softly.assertThat(retryBackoff.getFirstBackoff()) .isEqualTo(Duration.ofMillis(200)); }); }