gpt4 book ai didi

java - FlexibleSearchService 不适用于 fork join 池 (hybris)

转载 作者:行者123 更新时间:2023-12-02 11:46:56 26 4
gpt4 key购买 nike

我有一个rest api Controller ,它接受大量元素,搜索数据库中的每个元素,更新字段,然后将更新后的对象保存在数据库中响应真的很慢,所以我想使用某种异步调用。我的代码:

@RequestMapping(value = "qwerty/", method = RequestMethod.POST,
consumes = {"application/xml"},
produces = "application/xml")
@ResponseBody
public PriceResponceDTOCollection performTask(@RequestBody PriceDataDTOCollection priceList){
final List<PriceError> priceErrorList = new ArrayList<>();
final List<PriceError> priceErrorList = new ArrayList<>();
final List<CompletableFuture> futures = new ArrayList();
for (final PriceData price : priceList.getPriceList()) {
futures.add(CompletableFuture.supplyAsync(()->priceService.setPrice(price)).thenAccept(priceErrorList::add));
}
futures.stream().map(CompletableFuture::join).count();

}

这是priceservice的setPrice方法

@Autowired
private FlexibleSearchService flexibleSearchService;
public PriceError setPrice(Price data){
//building query
//initialize map with params
return flexibleSearchService.search(query.toString(),params).getResult().get(0);
}

然后我在 de.hybris.platform.servicelayer.session.impl.DefaultSessionService.executeInLocalView(DefaultSessionService.java:94) 中得到 NPE

顺便说一句,如果我的 Controller 看起来像这样(没有 Fork 加入池):

@RequestMapping(value = "qwerty/", method = RequestMethod.POST,
consumes = {"application/xml"},
produces = "application/xml")
@ResponseBody
public PriceResponceDTOCollection performTask(@RequestBody PriceDataDTOCollection priceList){
final List<PriceError> priceErrorList = new ArrayList<>();
for (final PriceData price : priceList.getPriceList()) {
PriceError err = priceService.setPrice(price);
priceErrorList.add(err);
}

}

一切都很完美。这是什么原因(我也试过priceList.getPriceList().parallelstream()也得到NPE)

最佳答案

我认为通过网络服务更新价格是关键操作。也许您可以将更新转换为 impex 并调用 impex 导入服务。 Impex引擎具有并行处理和其他保护。

关于java - FlexibleSearchService 不适用于 fork join 池 (hybris),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48135007/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com