既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
在配置类中创建队列对象。
@Configuration
public class SimpleQueueConfig {
@Bean
public Queue queue(){
}
}
生产者
- private RabbitTemplate rabbitTemplate; //rabbitmq操作对象
- convertAndSend : 发送方法
if (m > 0) {
Long maotai = stringRedisTemplate.opsForValue()
.decrement("maotai");//原子性redis操作
log.debug("抢购茅台一瓶,还剩:{}瓶", maotai);
s1 =System.currentTimeMillis();
//操作数据库修改数据
rabbitTemplate.convertAndSend("hello\_queue",1);
s2 =System.currentTimeMillis();
log.debug("耗时:{}ms",(s2-s1));
return HttpResp.success("去库存成功:"+(s2-s1));
} else {
return HttpResp.failed("0");
}
消费者
- @RabbitListener(queues = “要监听的队列名称”)
- @RabbitHandler //要使用RabbitMQ处理的方法
@RabbitListener(queues = "hello\_queue")
@Override
public void updateByBookIdMq(Long bookId) throws InterruptedException {
LambdaQueryWrapper<Store>
queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Store::getBook, bookId);
Store store = storeDao.selectOne(queryWrapper);
if (store.getNum() > 0) {
int left = store.getNum() - 1;
Thread.sleep(50);
store.setNum(left);
storeDao.updateById(store);
log.debug("数据库修改数据完成,库存量:{}", left);
}
}
![img](https://img-blog.csdnimg.cn/img_convert/76cfa5b68676ef5aeef504371c722be6.png)
![img](https://img-blog.csdnimg.cn/img_convert/3a88382669f8c94a6463a82a9f4c9c0a.png)
![img](https://img-blog.csdnimg.cn/img_convert/794d7a369d75870af01743e96dcdfaf7.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**