【发布时间】:2022-01-05 13:46:13
【问题描述】:
我想创建一个第三方服务的@Bean,例如 Keycloak(或任何其他),它可能在任何给定时间都可以访问,也可能无法访问。此对象应重试生成的 Keycloak bean 的所有方法。
我尝试了以下方法:
@Configuration
@EnableRetry
class KeycloakBeanProvider() {
@Bean
@Retryable
fun keycloak(oauth2ClientRegistration: ClientRegistration): Keycloak {
return KeycloakBuilder.builder()
.serverUrl(serverUrl)
.realm(oauth2ClientRegistration.clientName)
.grantType(OAuth2Constants.CLIENT_CREDENTIALS)
.clientId(oauth2ClientRegistration.clientId)
.clientSecret(oauth2ClientRegistration.clientSecret)
.build()
}
}
但是这种方式只会重试 bean 创建,而不是对 bean 的实际方法调用。我知道@Retryable 可以在类级别上使用,但我不拥有Keycloak 类,所以我不能在那里添加它。
如何使生成的Keycloak bean 的方法可重试?
【问题讨论】:
标签: spring spring-retry