Я использую команду hystrix, чтобы сделать несколько нисходящих http-вызовов. Мне нужно подождать ответа от основной службы, прежде чем я смогу начать делать другие вызовы http.
@Service
public class ServiceProxy {
@HystrixCommand(fallBackMethod="...")
public MainObject callMainService() {
// call some remote service
}
@HystrixCommand(fallBackMethod="...")
public SomeOtherObject1 callService1(MainObject mainObject) {
}
@HystrixCommand(fallBackMethod="...")
public SomeOtherObject2 callService2(MainObject mainObject) {
}
}
@RestController
public class MyController {
@Autowired
private ServiceProxy proxy;
@GetMapping
public Response someOperation() {
MainObject mainObject = proxy.callMainService();
SomeOtherObject1 obj1 = proxy.callService1(mainObject);
SomeOtherObject2 obj2 = proxy.callService2(mainObject);
....
return response;
}
}
Для приведенного выше кода я ожидал бы, что вызовы callService1 и callService2 будут ждать, пока callMainService вернет ответ. Однако callService1 & callService2 вызывается с нулевым аргументом даже до завершения callMainService.
Я прочитал в документации Hystrix, что есть способ сделать синхронные вызовы. https://github.com/Netflix/Hystrix/wiki/How-To-Use#Synchronous-Execution Поддерживается ли аннотации?