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);?//這是一個事務?事務的失敗導致生產者不停發送這條消息
}
添加回答
舉報
0/150
提交
取消