商品上下架RocketMQ同步实现

博客介绍了商品上下架RocketMQ同步实现方法。改造GoodsService代码,异步发送mq消息并传递商品id。搜索微服务消费上下架信息,上架时用feign组件调用商品微服务获取消息插入elasticsearch索引库,下架则用商品id删除索引库信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

商品上下架RocketMQ同步实现

商品的上下架,改造一下,我们的GoodsService里的代码,

 @Autowired
    private RocketMQTemplate rocketMQTemplate;

    /**
     * 修改上下架的状态
     *
     * @param spuId
     * @param saleable
     * @return
     */
    @Transactional
    public void updateSaleable(Long spuId, Boolean saleable) {
        TbSpu tbSpu = new TbSpu();
        tbSpu.setId(spuId);
        tbSpu.setSaleable(saleable);
        boolean bSpuUpdate = spuService.updateById(tbSpu);
        if(!bSpuUpdate){
            throw new LyException(ExceptionEnum.UPDATE_OPERATION_FAIL);
        }
        UpdateWrapper<TbSku> updateWrapper = new UpdateWrapper<>();
        updateWrapper.lambda().set(TbSku::getEnable,saleable).eq(TbSku::getSpuId,spuId);
        boolean bSkuUpdate = skuService.update(updateWrapper);
        if(!bSkuUpdate){
            throw new LyException(ExceptionEnum.UPDATE_OPERATION_FAIL);
        }

        //发送 消息 ,消息内容是spuid
        String tag = saleable ? ITEM_UP_TAGS : ITEM_UP_TAGS;
        System.err.println("+++++++++++"+tag+spuId+"+++++++++++");
        rocketMQTemplate.convertAndSend(ITEM_TOPIC_NAME+":"+tag,spuId);
    }

使用了RocketMQ来异步发送mq消息,传过去商品的id,搜索微服务在创建消费者去消费上下架的信息,上架是用了feign组件去调用商品微服务获取商品消息再进行插入elasticsearch索引库中,下架用了商品的id,去删除索引库中的信息。
流程图如下:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值