Я создаю учебное приложение с API-интерфейсами Netflix для микросервисов.Тайм-аут Исключение в краю с помощью Feign и Hystrix
Это мой край, начиная с локального хоста: 9999:
@EnableHystrix
@EnableZuulProxy
@EnableEurekaClient
@SpringBootApplication
public class EdgeApplication {
public static void main(String[] args) {
SpringApplication.run(EdgeApplication.class, args);
}
}
Я определил 2 следующие приложения:
app-a
выставляет простой веб-сервис service-a
и начинает на локальной: 8081 app-b
выставляет веб-сервис service-b
, который вызывает service-a
, и начинается на локальном телефоне: 8082
service-b
звонки service-a
с помощью Netflix симулировать:
@FeignClient(value = "app-a", fallback = AppAFallback.class)
public interface AppAClient {
@RequestMapping(value = "service-a", method = RequestMethod.GET)
List<Entity> serviceA();
}
@Component
public class AppAFallback implements AppAClient {
private static final Entity DEFAULT_ENTITY = new Entity();
@Override
public List<Entity> serviceA() {
return Collections.singletonList(DEFAULT_ENTITY);
}
}
Хотя app-a
и app-b
работают, каждый сервис отвечает, как и ожидалось:
- http://localhost:8081/service-a
- http://localhost:8082/service-b
- http://localhost:9999/app-a/service-a (через край)
- (через край)
Резервный AppAFallback
должен быть вызван, если app-b
вниз. Однако я должен ждать примерно за 1 минуту до того, как это произойдет.
Только после того, как app-b
вниз:
- http://localhost:8081/service-a работает хорошо и запасной вариант называется
- http://localhost:8082/service-b не достижим
- http://localhost:9999/app-a/service-a АУТ:
HystrixRuntimeException: app-a timed-out and no fallback available.
- http://localhost:9999/app-b/service-b АУТ:
HystrixRuntimeException: app-b timed-out and no fallback available.
и 1 минуту после app-b
вниз:
- http://localhost:8081/service-a работает хорошо и запасной вариант называется
- http://localhost:8082/service-b не достижим
- http://localhost:9999/app-a/service-a работает хорошо и запасной вариант называется
- http://localhost:9999/app-b/service-b ГЕНЕРАЛ балансировки нагрузки не имеет доступного сервера для клиента:
app-b
И это результат, которого я ожидал. Любая идея о том, почему звонки на app-a/service-a
сразу после app-b
не дают мне ВРЕМЯ?
Заранее за вашу помощь.