From 3ae2a0dc156c5397e59f0dfe4822ed86e4a50254 Mon Sep 17 00:00:00 2001 From: asahi Date: Sun, 13 Apr 2025 22:32:39 +0800 Subject: [PATCH] =?UTF-8?q?doc:=20=E9=98=85=E8=AF=BBproject=20reactor?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spring/webflux/Reactor.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/spring/webflux/Reactor.md b/spring/webflux/Reactor.md index a3c20d3..c77210c 100644 --- a/spring/webflux/Reactor.md +++ b/spring/webflux/Reactor.md @@ -61,6 +61,7 @@ - [retry](#retry) - [retry原理](#retry原理) - [retryWhen](#retrywhen) + - [retry helper](#retry-helper) # Reactor ## Reactive Programming @@ -959,7 +960,11 @@ Retry周期如下所示: - 如果`companion flux`complete,将会对error执行swallow操作,retry cycle将会停止,并且也会导致sequence complete - 如果`companion flux`产生了一个error,retry cycle将会终止,并且导致sequence按异常终止 - - - - +#### retry helper +project reactor提供了`Retry` helper,如`RetrySpec`和`RetryBackoffSpec`,二者都允许进行如下所示的自定义行为: +- `filter`:通过filter设置`允许触发retry的异常` +- `modifyErrorFilter`: 对之前`filter`设置的异常进行修改 +- `doBeforeRetry`和`doAfterRetry`:针对retrytrigger执行side effect + - > `doBeforeRetry()`方法触发在delay发生之前,而`doAfterRetry()`触发在delay之后 +- `onRetryExhaustedThrow(BiFunction)`:在重试数量达到上限后,通过`onRetryExhaustedThrow(BiFunction)`来自定义异常。 + - 通常情况下,当重试数量达到上限后,自定义异常类型通过`Exceptions.retryExhausted(…​)`方法来构建,其返回的异常类型为`RetryExhaustedException`,可以通过`Exceptions.isRetryExhausted(Throwable)`方法来进行区分 \ No newline at end of file