diff --git a/01-placeorder/pom.xml b/01-placeorder/pom.xml
index c9875fb..a8e301c 100644
--- a/01-placeorder/pom.xml
+++ b/01-placeorder/pom.xml
@@ -26,6 +26,10 @@
org.springframework.cloud
spring-cloud-starter-openfeign
+
+ org.springframework.boot
+ spring-boot-starter-amqp
+
\ No newline at end of file
diff --git a/01-placeorder/src/main/java/com/mashibing/config/RabbitMQConfig.java b/01-placeorder/src/main/java/com/mashibing/config/RabbitMQConfig.java
new file mode 100644
index 0000000..d71e9df
--- /dev/null
+++ b/01-placeorder/src/main/java/com/mashibing/config/RabbitMQConfig.java
@@ -0,0 +1,52 @@
+package com.mashibing.config;
+
+import org.springframework.amqp.core.*;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author zjw
+ * @description
+ */
+@Configuration
+public class RabbitMQConfig {
+
+ // 下单服务的交换机
+ public static final String PLACE_ORDER_EXCHANGE = "place_order_exchange";
+ // 三个服务的Queue
+ public static final String COUPON_QUEUE = "coupon_queue";
+ public static final String USER_POINTS_QUEUE = "user_points_queue";
+ public static final String BUSINESS_QUEUE = "business_queue";
+
+
+ @Bean
+ public Exchange placeOrderExchange(){
+ return ExchangeBuilder.fanoutExchange(PLACE_ORDER_EXCHANGE).build();
+ }
+
+ @Bean
+ public Queue couponQueue(){
+ return QueueBuilder.durable(COUPON_QUEUE).build();
+ }
+ @Bean
+ public Queue userPointsQueue(){
+ return QueueBuilder.durable(USER_POINTS_QUEUE).build();
+ }
+ @Bean
+ public Queue businessQueue(){
+ return QueueBuilder.durable(BUSINESS_QUEUE).build();
+ }
+
+ @Bean
+ public Binding couponBinding(Exchange placeOrderExchange,Queue couponQueue){
+ return BindingBuilder.bind(couponQueue).to(placeOrderExchange).with("").noargs();
+ }
+ @Bean
+ public Binding userPointsBinding(Exchange placeOrderExchange,Queue userPointsQueue){
+ return BindingBuilder.bind(userPointsQueue).to(placeOrderExchange).with("").noargs();
+ }
+ @Bean
+ public Binding businessBinding(Exchange placeOrderExchange,Queue businessQueue){
+ return BindingBuilder.bind(businessQueue).to(placeOrderExchange).with("").noargs();
+ }
+}
diff --git a/01-placeorder/src/main/java/com/mashibing/controller/PlaceOrderController.java b/01-placeorder/src/main/java/com/mashibing/controller/PlaceOrderController.java
index 35b0465..dd3d786 100644
--- a/01-placeorder/src/main/java/com/mashibing/controller/PlaceOrderController.java
+++ b/01-placeorder/src/main/java/com/mashibing/controller/PlaceOrderController.java
@@ -1,6 +1,8 @@
package com.mashibing.controller;
import com.mashibing.client.*;
+import com.mashibing.config.RabbitMQConfig;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -16,6 +18,8 @@ public class PlaceOrderController {
private ItemStockClient itemStockClient;
@Autowired
private OrderManageClient orderManageClient;
+
+ /*
@Autowired
private CouponClient couponClient;
@Autowired
@@ -23,7 +27,10 @@ public class PlaceOrderController {
@Autowired
private BusinessClient businessClient;
+*/
+ @Autowired
+ private RabbitTemplate rabbitTemplate;
/**
* 模拟用户下单操作
* @return
@@ -35,12 +42,19 @@ public class PlaceOrderController {
itemStockClient.decr();
//2、调用订单服务,创建订单
orderManageClient.create();
+
+ // 将之前的同步方式注释
+ /*
//3、调用优惠券服务,预扣除使用的优惠券
couponClient.coupon();
//4、调用用户积分服务,预扣除用户使用的积分
userPointsClient.up();
//5、调用商家服务,通知商家用户已下单
businessClient.notifyBusiness();
+*/
+ String userAndOrderInfo = "用户信息&订单信息&优惠券信息等等…………";
+ // 将同步方式修改为基于RabbitMQ的异步方式
+ rabbitTemplate.convertAndSend(RabbitMQConfig.PLACE_ORDER_EXCHANGE,"",userAndOrderInfo);
long end = System.currentTimeMillis();
System.out.println(end - start);
diff --git a/01-placeorder/src/main/resources/application.yml b/01-placeorder/src/main/resources/application.yml
index 4b5ff9d..5ffa4c0 100644
--- a/01-placeorder/src/main/resources/application.yml
+++ b/01-placeorder/src/main/resources/application.yml
@@ -7,4 +7,10 @@ spring:
cloud:
nacos:
discovery:
- server-addr: 114.116.226.76:8848
\ No newline at end of file
+ server-addr: 114.116.226.76:8848
+ rabbitmq:
+ host: 114.116.226.76
+ port: 5672
+ username: rabbitmq
+ password: rabbitmq
+ virtual-host: rabbitmq
\ No newline at end of file