Created 2022年11月8日12:10
Updated 2022年11月8日17:27
Categories
Java
Spring Boot
Resilience4jで設定値からサーキットブレーカーを有効・無効を切り替えたい状況が発生したのでメモしておきます。
コントローラークラスのコンストラクタでCircuitBreakerRegistry
を受け取りtransitionToDisabledState
メソッドを呼ぶことで、indexメソッドでのサーキットブレーカーの有効無効を切り替えることができます。
もちろんCircuitBreakerRegistry
を受け取るのに@Autowired
を使ってもOKです。
@Controller
public class TestController {
public TestController(
CircuitBreakerRegistry registry,
@Value("${conf.circuitBreaker.enabled}") Boolean enableCircuitBreaker) {
if (!enableCircuitBreaker) {
registry.circuitBreaker("testCircuitBreaker").transitionToDisabledState();
}
}
@GetMapping(value = "/")
@CircuitBreaker(name = "testCircuitBreaker", fallbackMethod = "fallbackMethod")
public String index() {
...
}
}
enableCircuitBreakerのBoolean値はapplication.ymlから取得します。application.ymlに以下を記載すればOKです。
conf:
circuitBreaker:
enabled: false