【Java - Spring Boot】Resilience4jのオン / オフをapplication.ymlの設定から変える

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

コメントを投稿

コメント