Bir neçə servisə zəng edib cavabları birləşdirir, müştəriyə tək kompakt cavab verir. API Gateway-ə oxşardır, amma daha spesifikdir.
Client-in 3-5 ayrı servisə zəng etməsi əvəzinə, Aggregator bunu öz üzərinə götürür. Client-ə tək zəng yetər.
CompletableFuture/async ilə bütün downstream servislərə eyni anda paralel zəng edilir — ən yavaşı qədər gözləyirsiniz.
WebClient (reactive), CompletableFuture, Gateway Filter Chain, GraphQL (natural aggregator).
@Service
public class ProductAggregator {
public ProductDetailDto getProductDetails(Long productId) {
// 3 servisə PARALLel zəng et
CompletableFuture<Product> prodFuture =
CompletableFuture.supplyAsync(() -> catalogClient.get(productId));
CompletableFuture<List<Review>> reviewFuture =
CompletableFuture.supplyAsync(() -> reviewClient.getByProduct(productId));
CompletableFuture<Integer> stockFuture =
CompletableFuture.supplyAsync(() -> inventoryClient.getStock(productId));
// Hamısı bitsin, sonra birləşdir
CompletableFuture.allOf(prodFuture, reviewFuture, stockFuture).join();
return new ProductDetailDto(
prodFuture.join(),
reviewFuture.join(),
stockFuture.join()
);
}
}