Как сделать синхронный вызов с помощью аннотации HystrixCommand - PullRequest
0 голосов
/ 04 апреля 2019

Я использую команду 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 Поддерживается ли аннотации?

...