Configuring Hystrix Circuit Breakers

Default Configuration

To provide a default configuration for all of your circuit breakers create a Customize bean that is passed a HystrixCircuitBreakerFactory or ReactiveHystrixCircuitBreakerFactory. The configureDefault method can be used to provide a default configuration.

@Bean
public Customizer<HystrixCircuitBreakerFactory> defaultConfig() {
	return factory -> factory.configureDefault(id -> HystrixCommand.Setter
			.withGroupKey(HystrixCommandGroupKey.Factory.asKey(id))
			.andCommandPropertiesDefaults(HystrixCommandProperties.Setter()
			.withExecutionTimeoutInMilliseconds(4000)));
}
Reactive Example
@Bean
public Customizer<ReactiveHystrixCircuitBreakerFactory> defaultConfig() {
	return factory -> factory.configureDefault(id -> HystrixObservableCommand.Setter
			.withGroupKey(HystrixCommandGroupKey.Factory.asKey(id))
			.andCommandPropertiesDefaults(HystrixCommandProperties.Setter()
					.withExecutionTimeoutInMilliseconds(4000)));
}

Specific Circuit Breaker Configuration

Similarly to providing a default configuration, you can create a Customize bean this is passed a HystrixCircuitBreakerFactory

@Bean
public Customizer<HystrixCircuitBreakerFactory> customizer() {
	return factory -> factory.configure(builder -> builder.commandProperties(
					HystrixCommandProperties.Setter().withExecutionTimeoutInMilliseconds(2000)), "foo", "bar");
}
Reactive Example
@Bean
public Customizer<ReactiveHystrixCircuitBreakerFactory> customizer() {
	return factory -> factory.configure(builder -> builder.commandProperties(
					HystrixCommandProperties.Setter().withExecutionTimeoutInMilliseconds(2000)), "foo", "bar");
}