Вызов нескольких служб одновременно внутри метода - PullRequest
0 голосов
/ 24 марта 2020

У меня есть сценарий, в котором я должен вызывать 4 разные внешние службы внутри метода одновременно, и если кто-либо из потока сначала получит данные, тогда мне нужно отменить остальную часть потока и вернуть ответ.

class ProductService{
    public List<Product> getProducts(){
       // logic to call multiple services concurrently 
       // if any of the thread get the data then cancel the rest concurrent call gracefully
       // return the response
    }
}

Может ли кто-нибудь помочь мне реализовать эту логику c.

1 Ответ

0 голосов
/ 24 марта 2020

Клиент

public Mono<Product> getProduct(String productId) {
  // api request using spring webclient
}

Потребитель

Mono<Product> request1 = getProduct("1");
Mono<Product> request2 = getProduct("2");

Product product = Flux.merge(request1, request2).blockFirst();

Он будет блокироваться на неопределенный срок до возврата одного из запросов. Это использует Spring webflux. Подробнее об этом здесь

...