Ваш метод retry()
просто повторяет попытку издателя, возвращаемого dbService.dbThingErrorSometimes()
, который может быть Mono.error()
. dbService.dbThingErrorSometimes()
никогда не вызывается повторно, издатель, которого он издает, просто переподписывается.
Так что, если он выдает , выдает ошибку, то повторная подписка на эту же ошибку издателя не когда-либо изменится результат, следовательно, ваш бесконечный l oop.
Вместо этого вы, вероятно, захотите сделать Mono
ленивым, повторно вызывая dbService.dbThingErrorSometimes()
каждый раз, когда вы повторите попытку - вы можете достичь этого, завершение вызова этого метода в Mono.defer()
.