какой сервис нам нужен для обновления двух удаленных объектов за одну операцию - PullRequest
0 голосов
/ 18 апреля 2019

Два удаленных объекта связаны и должны обновляться за одну операцию.Какой сервис вам нужен для этого, если вы предполагаете, что оба объекта могут находиться в разных системах и что одновременно могут выполняться несколько операций?

1 Ответ

0 голосов
/ 18 апреля 2019

Вы можете использовать CompletableFuture, например,


// create promises to get product
    CompletableFuture<List<String>> product1 = CompletableFuture.completedFuture(callService1());
    CompletableFuture<List<String>> product2 = CompletableFuture.completedFuture(callService2());
    CompletableFuture<List<String>> product3 = CompletableFuture.completedFuture(callService3());

    // collect promises just for convenience
    List<CompletableFuture<List<String>>> allFutures = Arrays.asList(product1, product2, product3);

    // wait until all cars will be obtained
    CompletableFuture<List<String>> listCompletableFuture =
            CompletableFuture.allOf(product1, product2, product3)
            .thenApply(avoid -> allFutures  //start to collect them
                    .stream()
                    .flatMap(f -> f.join().stream()) //get List from feature. Here these cars has been obtained, therefore non blocking
                    .collect(Collectors.toList())
    );

...