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

4.2 订单服务结束任务 4.2.1 需求分析
订单服务接收MQ完成选课的消息,将任务从当前任务表删除,将完成的任务添加到完成任务表。 4.2.2 Dao
1、删除xc_task
2、添加xc_task_his
定义过程略 4.2.3 Service
在TaskService中定义删除任务方法
[mw_shl_code=applescript,true]//删除任务
@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); } }
[/mw_shl_code]
4.2.4 接收完成选课消息
在com.xuecheng.manage_order.mq包下ChooseCourseTask类中添加receiveChoosecourseTask,接收完成选 课任务消息并进行处理。

[mw_shl_code=applescript,true]/* 接收选课响应结果 */ @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);
}
[/mw_shl_code]
4.3 集成测试
测试流程如下:
1、手动向任务表添加一条任务。
2、启动rabbitMQ.
3、启动订单服务、选课服务。
4、观察日志是否添加选课成功 完成任务后将xc_task任务移动到xc_task_his表中
完成任务后在选课表中多了一条学生选课记录

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值