Я хочу предопределить глобальную конфигурацию для всех команд hystrix в моем проекте. т.е. Я хочу пометить методы только чем-то вроде этого:
@HystrixCommand(commandKey = "MFO_SERVICE", fallbackMethod = "fallback")
не так
@HystrixCommand(
commandKey = "MFO_SERVICE",
commandProperties = {
@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "1000"),
@HystrixProperty(name = "metrics.rollingStats.timeInMilliseconds", value = "60000"),
@HystrixProperty(name = "circuitBreaker.errorThresholdPercentage", value = "10"),
@HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "50"),
@HystrixProperty(name = "circuitBreaker.sleepWindowInMilliseconds", value = "60000")},
fallbackMethod = "fallback")
И все параметры должны храниться в файле свойств и должны иметь возможность изменяться без повторной компиляции. Итак, я пытаюсь использовать компонент Spring, который берет параметр из окружения и вводит его в ConfigurationManager Hystrix (Archaius).
@Component
public class HystrixConfig {
@Value("${execution.isolation.thread.timeoutInMilliseconds}")
private String timeoutInMilliseconds;
@PostConstruct
private void init() {
ConfigurationManager.getConfigInstance().setProperty("hystrix.command.MFO_SERVICE.execution.isolation.thread.timeoutInMilliseconds", timeoutInMilliseconds);
}
}
Но это не имеет никакого эффекта. Похоже, что на момент Spring @PostConstruct команды hystrix не существует. И, наконец, я получил HystrixCommand с конфигурацией по умолчанию.
Есть ли способ решить эту проблему?