У меня есть функция в моем классе @Service, помеченная @HystrixCommand.
Этот метод действует как клиент, который отправляет запрос на другой URL-адрес службы и возвращает ответ.
Что я хочу сделать, так это запустить резервную функцию, когда код состояния ответа отличается от 200. Он также вызовет резервную функцию для любых других исключений (RuntimeExceptions и т. д.).
Я хочу сделать это, используя @HystrixProperty или @HystrixCommandProperty.
Я хочу, чтобы клиент пропинговал URL-адрес и прослушал статус ответа 200, и если он не вернет статус 200 в течение определенного периода времени, я хочу, чтобы он вернулся.
Если он обычно возвращает статус 200 в течение определенного времени, он не должен вызывать откат.
@HystrixCommand(fallbackMethod="fallbackPerformOperation")
public Future<Object> performOperation(String requestString) throws InterruptedException
return new AsyncResult<Object>() {
@Override
public Object invoke() {
Client client = null;
WebResource webResource = null;
ClientResponse response =null;
String results = null;
try{
client = Client.create();
webResource = client.resource(URL);
client.setConnectTimeout(10000);
client.setReadTimeout(10000);
response = webResource.type("application/xml")
.post(ClientResponse.class, requestString);
} finally {
client.destroy();
webResource = null;
}
return results;
}
};
}
Я специально хочу использовать @HystrixProperty или @HystrixCommandProperty, поэтому выполнение проверки внутри метода на наличие кода состояния ответа, отличного от 200, а затем создание исключения неприемлемо.
Вместо использования аннотаций будет ли создаваться моя собственная команда путем расширения интерфейса HystrixCommand?
Любые идеи или ресурсы о том, с чего я могу начать, приветствуются.