优化consumer生成商品索引。改为批量生成

This commit is contained in:
paulGao 2022-04-25 10:26:51 +08:00
parent 0354d6dc3e
commit aa185c8bd2
3 changed files with 25 additions and 6 deletions

View File

@ -376,20 +376,18 @@ public class GoodsMessageListener implements RocketMQListener<MessageExt> {
*/ */
private void generatorGoodsIndex(Goods goods, List<GoodsSku> goodsSkuList) { private void generatorGoodsIndex(Goods goods, List<GoodsSku> goodsSkuList) {
int skuSource = 100; int skuSource = 100;
List<EsGoodsIndex> esGoodsIndices = new ArrayList<>();
for (GoodsSku goodsSku : goodsSkuList) { for (GoodsSku goodsSku : goodsSkuList) {
EsGoodsIndex esGoodsOld = goodsIndexService.findById(goodsSku.getId());
EsGoodsIndex goodsIndex = this.settingUpGoodsIndexData(goods, goodsSku); EsGoodsIndex goodsIndex = this.settingUpGoodsIndexData(goods, goodsSku);
goodsIndex.setSkuSource(skuSource--); goodsIndex.setSkuSource(skuSource--);
log.info("goodsSku{}", goodsSku); log.info("goodsSku{}", goodsSku);
log.info("esGoodsOld{}", esGoodsOld);
//如果商品库存不为0并且es中有数据 //如果商品库存不为0并且es中有数据
if (goodsSku.getQuantity() > 0 && esGoodsOld == null) { if (goodsSku.getQuantity() > 0) {
log.info("生成商品索引 {}", goodsIndex); log.info("生成商品索引 {}", goodsIndex);
this.goodsIndexService.addIndex(goodsIndex); esGoodsIndices.add(goodsIndex);
} else if (goodsSku.getQuantity() > 0 && esGoodsOld != null) {
goodsIndexService.updateIndex(goodsIndex);
} }
} }
this.goodsIndexService.addIndex(esGoodsIndices);
} }
private EsGoodsIndex settingUpGoodsIndexData(Goods goods, GoodsSku goodsSku) { private EsGoodsIndex settingUpGoodsIndexData(Goods goods, GoodsSku goodsSku) {

View File

@ -38,6 +38,13 @@ public interface EsGoodsIndexService {
*/ */
void addIndex(EsGoodsIndex goods); void addIndex(EsGoodsIndex goods);
/**
* 添加商品索引
*
* @param goods 商品索引信息
*/
void addIndex(List<EsGoodsIndex> goods);
/** /**
* 更新商品索引 * 更新商品索引
* *

View File

@ -210,6 +210,20 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements
} }
} }
/**
* 添加商品索引
*
* @param goods 商品索引信息
*/
@Override
public void addIndex(List<EsGoodsIndex> goods) {
try {
goodsIndexRepository.saveAll(goods);
} catch (Exception e) {
log.error("批量为商品生成索引异常", e);
}
}
@Override @Override
public void updateIndex(EsGoodsIndex goods) { public void updateIndex(EsGoodsIndex goods) {
goodsIndexRepository.save(goods); goodsIndexRepository.save(goods);