A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

4.2 订单服务结束任务 4.2.1 需求分析
订单服务接收MQ完成选课的消息,将任务从当前任务表删除,将完成的任务添加到完成任务表。 4.2.2 Dao
1、删除xc_task
2、添加xc_task_his
定义过程略 4.2.3 Service
在TaskService中定义删除任务方法
[AppleScript] 纯文本查看 复制代码
//删除任务    
 @Transactional  
   public void finishTask(String taskId){      
    Optional<XcTask> taskOptional = xcTaskRepository.findById(taskId);       
   if(taskOptional.isPresent()){    
         XcTask xcTask = taskOptional.get();  
           xcTask.setDeleteTime(new Date());        
     XcTaskHis xcTaskHis = new XcTaskHis(); 
            BeanUtils.copyProperties(xcTask, xcTaskHis);    
         xcTaskHisRepository.save(xcTaskHis);      
       xcTaskRepository.delete(xcTask);         }     }

4.2.4 接收完成选课消息
在com.xuecheng.manage_order.mq包下ChooseCourseTask类中添加receiveChoosecourseTask,接收完成选 课任务消息并进行处理。

[AppleScript] 纯文本查看 复制代码
/**  * 接收选课响应结果  */ @RabbitListener(queues = {RabbitMQConfig.xc_learning_finishaddchoosecourse}) public void receiveFinishChoosecourseTask(XcTask task,Message message, Channel channel) throws  IOException { 
    LOGGER.info("receiveChoosecourseTask...{}",task.getId());    
 //接收到 的消息id   
  String id = task.getId();    
 //删除任务,添加历史任务    
 taskService.finishTask(id);
 }

4.3 集成测试
测试流程如下:
1、手动向任务表添加一条任务。
2、启动rabbitMQ.
3、启动订单服务、选课服务。
4、观察日志是否添加选课成功 完成任务后将xc_task任务移动到xc_task_his表中
完成任务后在选课表中多了一条学生选课记录

测试消息重复消费:
1、手动向任务表添加一条任务。
2、启动rabbitMQ.
3、先启动订单表,等待消息队列是否积累了多个消息。
4、再启动选课服务,观察是否重复添加选课



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马