猿问

rabbitMQ消费问题,消费者方法有一个事务,事务失败,消费者认为这个消息没有被消费掉,导致生产者重发

public void sendMiaoshaMessage(MiaoshaMessage mm) {
   String msg = RedisService.beanToString(mm);
   log.info("send message:"+msg);
   amqpTemplate.convertAndSend(MQConfig.MIAOSHA_QUEUE, msg);
}


@RabbitListener(queues = MQConfig.MIAOSHA_QUEUE)
public void receive(String message) {
    log.info("receive message:" + message);
    MiaoshaMessage mm = RedisService.stringToBean(message, MiaoshaMessage.class);
    MiaoshaUser user = mm.getUser();
    long goodsId = mm.getGoodsId();

    GoodsVo goods = goodsService.getGoodsVoByGoodsId(goodsId);
    int stock = goods.getStockCount();
    if (stock <= 0) {
        return;
    }
    //判断是否已经秒杀到了
    MiaoshaOrder order = orderService.getMiaoshaOrderByUserIdGoodsId(user.getId(), goodsId);
    if (order != null) {
        return;
    }

    miaoshaService.miaosha(user, goods); //这是一个事务 事务的失败导致生产者不停发送这条消息
}


噼喱啪啦
浏览 3015回答 3
3回答

HansonQ

不做日志记录么?
随时随地看视频慕课网APP
我要回答