diff --git a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java index f7a369b0..69dfb622 100644 --- a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java @@ -2,7 +2,6 @@ package cn.lili.listener; import cn.hutool.core.map.MapUtil; import cn.hutool.core.text.CharSequenceUtil; -import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ClassLoaderUtil; import cn.hutool.json.JSONObject; @@ -141,7 +140,7 @@ public class GoodsMessageListener implements RocketMQListener { } break; case UPDATE_GOODS_INDEX_PROMOTIONS: - ThreadUtil.execAsync(() -> this.updateGoodsIndexPromotions(new String(messageExt.getBody()))); + this.updateGoodsIndexPromotions(new String(messageExt.getBody())); break; case DELETE_GOODS_INDEX_PROMOTIONS: BasePromotions promotions = JSONUtil.toBean(new String(messageExt.getBody()), BasePromotions.class); diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java index 67040823..629ae01a 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java @@ -619,7 +619,7 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements /** * 以更新部分字段的方式更新索引促销信息 * - * @param id 索引id + * @param id 索引id * @param promotionMap 促销信息 */ private void updatePromotionsByScript(String id, Map promotionMap) { @@ -628,10 +628,16 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements String s = jsonObject.toString(); String promotionsStr = s.replace("{", "[").replace("}", "]"); - UpdateByQueryRequest update = new UpdateByQueryRequest(getIndexName()); - update.setQuery(QueryBuilders.boolQuery().filter(QueryBuilders.termsQuery("id", id))); - update.setScript(new Script("ctx._source." + "promotionMap" + "=" + promotionsStr + ";")); - client.updateByQueryAsync(update, RequestOptions.DEFAULT, this.actionListener()); + UpdateRequest updateRequest = new UpdateRequest(); + updateRequest.index(getIndexName()); + updateRequest.id(id); + updateRequest.retryOnConflict(5); + updateRequest.script(new Script("ctx._source." + "promotionMap" + "=" + promotionsStr + ";")); + try { + client.update(updateRequest, RequestOptions.DEFAULT); + } catch (IOException e) { + log.error("更新商品索引促销信息错误", e); + } } /**