Parallelise calls in the getMarketplace method.
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
meta {
|
meta {
|
||||||
name: Get martplace
|
name: Get marketplace
|
||||||
type: http
|
type: http
|
||||||
seq: 1
|
seq: 1
|
||||||
}
|
}
|
||||||
@@ -1,11 +1,15 @@
|
|||||||
package com.zeenea.experiments.virtualthreads.virtualthreadsapp.domain.marketplace;
|
package com.zeenea.experiments.virtualthreads.virtualthreadsapp.domain.marketplace;
|
||||||
|
|
||||||
import com.zeenea.experiments.virtualthreads.virtualthreadsapp.domain.catalog.CatalogService;
|
import com.zeenea.experiments.virtualthreads.virtualthreadsapp.domain.catalog.CatalogService;
|
||||||
|
import com.zeenea.experiments.virtualthreads.virtualthreadsapp.domain.catalog.model.Catalog;
|
||||||
import com.zeenea.experiments.virtualthreads.virtualthreadsapp.domain.item.ItemService;
|
import com.zeenea.experiments.virtualthreads.virtualthreadsapp.domain.item.ItemService;
|
||||||
import com.zeenea.experiments.virtualthreads.virtualthreadsapp.domain.item.model.Item;
|
import com.zeenea.experiments.virtualthreads.virtualthreadsapp.domain.item.model.Item;
|
||||||
import com.zeenea.experiments.virtualthreads.virtualthreadsapp.domain.marketplace.model.Marketplace;
|
import com.zeenea.experiments.virtualthreads.virtualthreadsapp.domain.marketplace.model.Marketplace;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class MarketplaceService {
|
public class MarketplaceService {
|
||||||
private final CatalogService catalogService;
|
private final CatalogService catalogService;
|
||||||
@@ -17,6 +21,24 @@ public class MarketplaceService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Marketplace getMarketplace() {
|
public Marketplace getMarketplace() {
|
||||||
|
return getMarketplaceInParallel();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Marketplace getMarketplaceInParallel() {
|
||||||
|
CompletableFuture<List<Catalog>> getCatalogsFuture = CompletableFuture.supplyAsync(catalogService::getAll);
|
||||||
|
CompletableFuture<List<Item>> getAllItemsFuture = CompletableFuture.supplyAsync(itemService::getAllItems);
|
||||||
|
|
||||||
|
CompletableFuture.allOf(getCatalogsFuture, getAllItemsFuture).join();
|
||||||
|
|
||||||
|
var catalogs = getCatalogsFuture.join();
|
||||||
|
var sharedItems = getAllItemsFuture.join()
|
||||||
|
.stream()
|
||||||
|
.filter(Item::isShared)
|
||||||
|
.toList();
|
||||||
|
return new Marketplace(catalogs, sharedItems);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Marketplace getMarketplaceSequentially() {
|
||||||
return new Marketplace(
|
return new Marketplace(
|
||||||
catalogService.getAll(),
|
catalogService.getAll(),
|
||||||
itemService.getAllItems()
|
itemService.getAllItems()
|
||||||
|
|||||||
Reference in New Issue
Block a user