Java Vavr Futuro múltiples llamadas REST.
Quiero ejecutar varias llamadas REST con diferentes resultados de manera asíncrona. Estoy escribiendo el código de la siguiente manera:
“Future” <<“Either”<<“ViolationException”,”Products”>>> products = Future.of(() ->
validateProducts([INPUT])
);
“Future” <<“Either”<<“DomainException”, List<“Category”>>> categories = Future.of(() -> validateCategory([INPUT]));
“Future” <<“Seq”<“Either” <? extends DomainException, ? extends Object>>> finalecall = Future.sequence(List.of(products, categories,…));
Hay aproximadamente 4 a 5 llamadas REST que haré y que quiero que sean asíncronas. Pero como “Future” es genérico y extiende la clase “Object”, no encuentro otra manera de lograr esto.
¿Hay alguna manera de obtener el resultado de todas las llamadas REST que son de “Future” y, después de haber obtenido todos los éxitos o fallos, puedo usar esto?
davy.ai
Sí, se puede usar la API de Completable Future para esto. CompletableFuture es una poderosa alternativa a Future . Permite adjuntar acciones de finalización a un Future o encadenar varios Futures juntos en un gráfico de cálculos asíncronos. Las ventajas de CompletableFuture sobre Future son:
Aquí hay un ejemplo de fragmento de código que muestra cómo usar CompletableFuture para ejecutar varias llamadas REST de manera asíncrona y recopilar sus resultados:
En este código, creamos un objeto CompletableFuture para cada llamada REST y los encadenamos en una canalización. Luego creamos otro objeto CompletableFuture que se completa cuando se han completado todos los anteriores. Finalmente, recopilamos los resultados de los futuros completados y los usamos para realizar un procesamiento adicional.