Нет причин, по которым вы не можете вызвать одного слушателя из другого (но вы не получите повторных попыток, если не вызовете его, используя RetryTemplate
в первом методе).
Если вы используете RetryTemplate
сконфигурирован на фабрике контейнеров для выполнения повторных попыток (вместо добавления BackOff
к SeektoCurrentErrorHandler
в версиях 2.3.x и выше), вы можете получить количество повторов (начиная с нуля) следующим образом ...
@KafkaListener(id = "so60172304.2", topics = "retryTopic")
public void listen2(String in) {
int retryCount = RetrySynchronizationManager.getContext().getRetryCount();
...
}
getContext()
вернет ноль, если вы вызовете это напрямую из первого метода (если вы не заключите вызов в RetryTemplate.execute()
).
В 2.5.xa заголовок попытки доставки будет быть доступным (опционально) даже при использовании SeektoCurrentErrorHandler
с BackOff
вместо использования RetryTemplate
на фабрике контейнеров.