SpringCloud 重试模板
RetryTemplate是Spring重试库的一部分。尽管涵盖RetryTemplate的所有功能超出了本文档的范围,但我们将提及以下与RetryTemplate特别相关的使用者属性:
- maxAttempts
处理消息的尝试次数。
默认值:3。
- backOffInitialInterval
重试时的退避初始间隔。
默认值1000毫秒。
- backOffMaxInterval
最大退避间隔。
默认值10000毫秒。
- backOffMultiplier
退避乘数。
默认为2.0。
- defaultRetryable
retryableExceptions中未列出的由侦听器引发的异常是否可以重试。默认值:
true。- retryableExceptions
键中Throwable类名称的映射,值中布尔值的映射。指定将要重试的那些异常(和子类)。另请参见
defaultRetriable。示例:spring.cloud.stream.bindings.input.consumer.retryable-exceptions.java.lang.IllegalStateException=false。默认值:空。
尽管上述设置足以满足大多数自定义要求,但它们可能无法满足某些复杂的要求,此时,您可能希望提供自己的RetryTemplate实例。为此,在应用程序配置中将其配置为bean。应用程序提供的实例将覆盖框架提供的实例。另外,为避免冲突,必须将绑定程序要使用的RetryTemplate实例限定为@StreamRetryTemplate。例如,
@StreamRetryTemplate public RetryTemplate myRetryTemplate() { return new RetryTemplate(); }
从上面的示例中可以看到,由于@StreamRetryTemplate是合格的@Bean,因此无需使用@Bean对其进行注释。