Конфигурация компонента для автоматического выключателя Resilience4J с использованием Spring Boot - PullRequest
2 голосов
/ 26 марта 2020

Я хочу переместить свою конфигурацию автоматического выключателя из файла application.yml в некоторый файл config java, так как объявление bean-компонента потому, что оно делает файл application.yml большим, смогу ли я удалить конфигурацию из приложения? yml и используйте аннотацию конфигурации для определения конфигурации автоматического выключателя. У меня есть файл конфигурации java со следующим кодом, например:

@Configuration
@Component
public class CircuitBreakConfig {

  @Bean
  public CircuitBreaker defaultCircuitBreaker() {
    CircuitBreakerConfig circuitBreakerConfig = CircuitBreakerConfig.custom()
      .failureRateThreshold(50)
      .slidingWindowSize(5)
      .waitDurationInOpenState(Duration.ofMillis(6000))
      .recordExceptions(IOException.class, TimeoutException.class,DataIntegrityViolationException.class)
      .build();
  // Create a CircuitBreakerRegistry with a custom global configuration
  CircuitBreakerRegistry circuitBreakerRegistry = 
     CircuitBreakerRegistry.of(circuitBreakerConfig);

  // Get or create a CircuitBreaker from the CircuitBreakerRegistry 
  // with the global default configuration
   return circuitBreakerRegistry.circuitBreaker("default"); 
  }

}

В моем служебном файле я комментирую метод для автоматического выключателя, например

@CircuitBreaker(name = "default", fallbackMethod = "fallback")
    public Employee createEmployeeDefinition(Employee emp)  throws Exception{
        if(Objects.nonNull(sample)){
            return EmployeeRepository.save(sample);
        }
        return null;
    }

    public Employee fallback(Employee emp,Exception ex) throws Exception{
        System.out.println(ex.getClass()+"  "+ex.getMessage() );
        return null;
    }

В этой текущей реализации я не могу чтобы достичь открытого состояния в моем автоматическом выключателе. Пожалуйста, предоставьте мне несколько предложений

...