Java的新项目学成在线笔记-day19(十五)

4.2 订单服务结束任务 4.2.1 需求分析 
订单服务接收MQ完成选课的消息,将任务从当前任务表删除,将完成的任务添加到完成任务表。 4.2.2 Dao 
1、删除xc_task
2、添加xc_task_his
定义过程略 4.2.3 Service 
在TaskService中定义删除任务方法

[AppleScript] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

//删除任务   

 @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] 纯文本查看 复制代码

?

1

2

3

4

5

6

7

/**  * 接收选课响应结果  */ @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、再启动选课服务,观察是否重复添加选课

你可能感兴趣的:(JAVA)