11、通过火车基础数据生成每日火车数据
11-1 本章介绍 (03:49)
11-2 快速生成每日车次数据管理功能 (16:34)
11-3 完善每日车次管理页面功能 (23:16)
GET请求的日期是拼在URL里,需要用springboot自带的注解@DateTimeFormat(pattern = “yyyy-MM-dd”),才能接收到参数
11-4 快速生成每日车站数据管理功能 (09:27)
11-5 快速生成每日车厢数据管理功能 (14:28)
11-6 快速生成每日座位数据管理功能 (17:29)
不同的操作系统,文件夹分隔符不一致,团队开发时,需要考虑代码的兼容,windows默认是\,但也支持/,mac是/,所以将代码全部改为/
关于sell字段的由来,可以回看2-3节:如何保证不超卖、不少卖,还要能承受极高的并发?
11-7 增加生成每日车次定时任务 (11:00)
实现跑批功能时,要想好补偿方案,有时候补偿方案不只一个
补偿的场景有很多,比如发现跑批生成数据不全,或者因政策变化或数据调整,需要重新生成数据
quartz默认的线程池是10,也就是说同时可以跑10个任务,多了就排队
定时任务不会经过日志拦截器,所以不会有日志跟踪号,需要MDC.put,异步线程也会没有日志跟踪号,同样需要MDC.put
11-8 集成OpenFeign实现服务间调用 (19:42)
正常项目中,跑批的核心功能,都应该在batch模块里执行,也就是说得在batch模块里,重新生成一遍train相关表的持久层,正常项目就应该这样做,让业务模块和跑批完全隔离开,不至于因为跑批性能差而影响了业务的开展。
本项目因为是演示项目,就不花这个时间做重复生成持久层了,直接调用business接口,刚好可以学习微服务的服务间调用组件feign(openfeign)
Feign是Netflix公司开发的一个声明式的 REST 调用客户端,SpringCloud的早期,就是将各种第三方组件,整合到SpringBoot项目里,形成了SpringCloud,现在慢慢的把第三方组件替换成自研的组件,比如gateway组件
OpenFeign是在Feign的基础上,增加SpringMVC注解,让代码写起来像在写Controller
使用spring.application.name可以给各应用起一个名字,方便应用之间互相认识,在注册中心、配置中心、路由、服务调用、限流等微服务组件中,都会用到。
11-9 增加生成每日车次功能 (26:41)
注解支持和方法写在同一行,多个注解也支持写在同一行
养成习惯,得到列表后,先判下空,防止空指针异常
可以看下老师的这个视频:《如何有效的避免空指针异常?》
11-10 增加生成每日车站功能 (15:54)
11-11 增加生成每日车厢功能 (06:42)
11-12 增加生成每日座位功能 (10:51)
sell初始信息都是0,表示都没卖过票,每个站都可买,5个站就初始化4个0
11-13 增加手动生成某日车次数据功能 (11:08)
可以对本节功能做扩展,支持生成某天的某个车次的数据,可以自己动手实现看看。
本节最终效果:选择一个日期,点击确认时,确认按钮有loading(防止重复还款日提交);生成接口返回后,取消loading;判断是生成成功时,关闭模态框,弹出:生成成功