Число повторов всегда 0 для пользовательского шаблона повторения весны - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь реализовать неопределенный экспоненциальный откат для службы.Политика повторных попыток и т. Д. Все работает должным образом, но нам нужна некоторая видимость счетчика повторов, и я хотел бы, чтобы это регистрировалось внутри самого блока выполнения (я настроил прослушиватель, который извлекает счетчик повторов и правильно его регистрирует,но он не включает наши идентификаторы span / trace и не имеет доступа к URI, к которому мы не можем записать и т. д.

Вот код:

Пользовательский шаблон повторов:

@StreamRetryTemplate
fun streamRetryTemplate(): RetryTemplate {
    val backOffPolicy = ExponentialRandomBackOffPolicy().apply {
        initialInterval = config.initialInterval
        multiplier = config.multiplier
        maxInterval = config.maxInterval
    }
    return RetryTemplate().apply {
        setRetryPolicy(AlwaysRetryPolicy())
        setBackOffPolicy(backOffPolicy)
        setListeners(retryListeners())
    }
}

... и вот слушатель, который DOES правильно регистрирует счет повторов:

@Bean
fun retryListeners(): Array<RetryListener> {

    return arrayOf(object : RetryListenerSupport() {

        override fun <T, E : Throwable> onError(
            context: RetryContext?, callback: RetryCallback<T, E>?, throwable: Throwable?
        ) {
            logger.info { "FROM LISTENER: ${context?.retryCount}" }
        }
    })
}

... и вот функция, которая на самом делевыполняет логику повторных попыток, но NOT когда-либо имеет счет повторных попыток, который больше 0, несмотря на то, что слушатель, распознающий число повторных попыток, больше 0 и ведущий журнал правильно:

private fun attachRequestWithRetries(method: HttpMethod, uri: String, record: Record) =
    streamRetryTemplate.execute(RetryCallback<Mono<ClientResponse>, Exception> { context ->
        if (context.retryCount > 0) logger.warn { "Retrying $method $uri. Retry: ${context.retryCount}" }
        attachRequest(method, uri, record)
    })

Любойидеи, почему он не увеличивается правильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...