1 工程导入流程
1. 解压pd压缩包,到Rbbitmq Project项目包下,idea导入解压后的pd-web工程,
2. 修改pom文件版本
3. 复制pd-web工程下的pd.sql文件的绝对路径,
4. 打开SQLYog数据库,右键导入pd.sql的路径,生成pd.store数据库
5. 确认JDK版本
6 启动RunApp类,编辑工作目录后,再重启
7.重启启动类后,输入url为localhost访问
8.删除这个用户,订单,商品订单三个表数据
9.进入登陆页面,注册新用户,填写收获地址,保存,再进行购买商品操作,结算后会在pd_order和pd_order_item两个表中看到订单数据
2 修改订单,把订单发送到rabbitmq
1.pom.xml 添加 rabbitmq 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2.application.yml 添加 rabbitmq 连接
3. 启动类 (或者新建自动配置类)
提供使用的队列参数: orderQueue,持久化,不独占,不自动删除
4.修改OrderServiceImpl,改为向Rabbitmq发送订单
把OrderServiceImpl中64-68行注释掉,补充为以下代码:
5. 启动pd-web工程启动类,输入url: localhost 进入商城,登录,
- 如果使用的是老师的rabbitmq服务就登陆他的服务,创建空间,商城下单,付款,可以在Queues栏
6. 如果使用的是自己的ip:
- 需要启动虚拟机,重启docker,重启rabbitmq,再回到pd-web项目重启启动类
- 登陆商城,下单支付,会在自己rabbite服务中看到上面的波动
创建订单消费者工程
第一步:project Struct 导入消费者工程,修改pom文件中工程名称,以及配置文件端口号
第二步:新建消费者类,从orderQueue 接收消息 ,调用原来的业务代码,存储订单
package com.pd;
import com.pd.pojo.PdOrder;
import com.pd.service.OrderService;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@RabbitListener(queues = "orderQueue")//指定从哪个队列接收消息
@Component //用于自动创建实例
public class OrderConsumer {
@Autowired
private OrderService orderService;
/*配合@RabbitListener 注解,指定处理消息的方法
*一个类中,只能有一个 @RabbitHandler注解
**/
@RabbitHandler
public void receive(PdOrder pdOrder) throws Exception { //接收的订单对象:pdOrder,序列化数据还原成订单对象
orderService.saveOrder(pdOrder); //存储订单
System.out.println("--------------订单已存储");
}
}
第三步:修改OrderServiceImpl
第四步:启动消费者启动类,会将pd-web工程中商城的提交的订单存储到数据库中
注意:保持pd-web工程启动类打开,提交的订单才会使消费者工程获取并存储
数据库订单表: