业务内部消化设计
- 新建 WorkManagerRunner 类 继承 ApplicationRunner 随spring boot程序启动
- 启动时调用 ① 方法,同时启动生产者和消费者
1. public void run(ApplicationArguments args) throws Exception { logger.info("start WorkManager"); workManager.startToWork(); } public void startToWork(){ startAllConsumer(); startProducer(); } - 每分钟一次执行 producer ,查询状态为0的 ‘短信触达订单’ ,将其封装到Task中。
- 将Task放入队列 BlockingQueue<Task> 中 ,然后将对应 ‘短信触达订单’ 状态变为DOING
- 【第五步与第二步同步】获取系统支持的线程数量,将Consumer放入线程池中,同时传入 BlockingQueue<Task>
- 从 queue 中取出 producer 放入的Task ,开始处理业务逻辑
- 处理完成后将Task中对应的 ‘短信触达订单’ 状态变为DONE
- 异常则变为 Error
Spring Boot业务内部消化设计与多线程应用

该博客介绍业务内部消化设计,新建WorkManagerRunner类随Spring Boot程序启动,启动时调用方法开启生产者和消费者。生产者每分钟查询状态为0的‘短信触达订单’封装到Task放入队列并改变订单状态,消费者从队列取Task处理业务,完成后改变订单状态,异常则标记为Error。
832

被折叠的 条评论
为什么被折叠?



