← Bütün Patternlər
🧩

Aggregator Pattern

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.

🎯
Nə üçün lazımdır?

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.

🔗
Paralel Zəng

CompletableFuture/async ilə bütün downstream servislərə eyni anda paralel zəng edilir — ən yavaşı qədər gözləyirsiniz.

🛠️
Spring ilə

WebClient (reactive), CompletableFuture, Gateway Filter Chain, GraphQL (natural aggregator).

İNTERAKTİV

Vizual İzah

Mərhələ {{ currentStep + 1 }}: {{ steps[currentStep].title }}

📱
Client
← Combined
🧩
Aggregator
👤
User
🛒
Order
Review
JAVA

Kod Nümunəsi — CompletableFuture

ProductAggregator.java
@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()
        );
    }
}
✅ Üstünlükləri
  • Client-ə tək endpoint kifayətdir
  • Paralel zəng ilə latency azalır
  • Data transformasiya/birləşdirmə mərkəzləşir
⚠️ Riskləri
  • Aggregator SPOF ola bilər
  • Bir servis yavaş → bütün cavab gözlədilir
  • Məntiq mürəkkəbləşə bilər