diff --git a/.gitignore b/.gitignore index 9154f4c..549e00a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,26 +1,33 @@ -# ---> Java -# Compiled class file -*.class +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ -# Log file -*.log +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache -# BlueJ files -*.ctxt +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - -# Package Files # -*.jar -*.war -*.nar -*.ear -*.zip -*.tar.gz -*.rar - -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* -replay_pid* +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ +### VS Code ### +.vscode/ diff --git a/a-rabbitMQ/business/pom.xml b/a-rabbitMQ/business/pom.xml new file mode 100644 index 0000000..8bd22d3 --- /dev/null +++ b/a-rabbitMQ/business/pom.xml @@ -0,0 +1,20 @@ + + + 4.0.0 + + com.shun + a-rabbitMQ + 0.0.1-SNAPSHOT + + + business + + + 17 + 17 + UTF-8 + + + \ No newline at end of file diff --git a/a-rabbitMQ/business/src/main/java/com/shun/business/BusinessApplication.java b/a-rabbitMQ/business/src/main/java/com/shun/business/BusinessApplication.java new file mode 100644 index 0000000..8025535 --- /dev/null +++ b/a-rabbitMQ/business/src/main/java/com/shun/business/BusinessApplication.java @@ -0,0 +1,19 @@ +package com.shun.business; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; + +/** + * @author 夜灬瞬 + * @since 2023/6/17 15:32 + */ +@SpringBootApplication +@EnableDiscoveryClient +public class BusinessApplication { + + public static void main(String[] args) { + SpringApplication.run(BusinessApplication.class,args); + } + +} diff --git a/a-rabbitMQ/business/src/main/java/com/shun/business/controller/BusinessController.java b/a-rabbitMQ/business/src/main/java/com/shun/business/controller/BusinessController.java new file mode 100644 index 0000000..839bc8e --- /dev/null +++ b/a-rabbitMQ/business/src/main/java/com/shun/business/controller/BusinessController.java @@ -0,0 +1,23 @@ +package com.shun.business.controller; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author 夜灬瞬 + * @since 2023/6/19 15:57 + */ +@RestController +public class BusinessController { + + /** + * 通知商家发货 + * @throws InterruptedException 异常 + */ + @GetMapping("/notify") + public void notifyBusiness() throws InterruptedException { + Thread.sleep(400); + System.out.println("通知商家成功!!"); + } + +} diff --git a/a-rabbitMQ/business/src/main/resources/application.yml b/a-rabbitMQ/business/src/main/resources/application.yml new file mode 100644 index 0000000..60d7668 --- /dev/null +++ b/a-rabbitMQ/business/src/main/resources/application.yml @@ -0,0 +1,9 @@ +server: + port: 1 +spring: + application: + name: business + cloud: + nacos: + discovery: + server-addr: 127.0.0.1:8848 \ No newline at end of file diff --git a/a-rabbitMQ/coupon/pom.xml b/a-rabbitMQ/coupon/pom.xml new file mode 100644 index 0000000..6dd6a0a --- /dev/null +++ b/a-rabbitMQ/coupon/pom.xml @@ -0,0 +1,21 @@ + + + 4.0.0 + + com.shun + a-rabbitMQ + 0.0.1-SNAPSHOT + + + coupon + 优惠券 + + + 17 + 17 + UTF-8 + + + \ No newline at end of file diff --git a/a-rabbitMQ/coupon/src/main/java/com/shun/coupon/CouponApplication.java b/a-rabbitMQ/coupon/src/main/java/com/shun/coupon/CouponApplication.java new file mode 100644 index 0000000..5c1f9ff --- /dev/null +++ b/a-rabbitMQ/coupon/src/main/java/com/shun/coupon/CouponApplication.java @@ -0,0 +1,18 @@ +package com.shun.coupon; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; + +/** + * @author 夜灬瞬 + * @since 2023/6/19 15:51 + */ +@SpringBootApplication +@EnableDiscoveryClient +public class CouponApplication { + + public static void main(String[] args) { + SpringApplication.run(CouponApplication.class,args); + } +} diff --git a/a-rabbitMQ/coupon/src/main/java/com/shun/coupon/controller/CouponController.java b/a-rabbitMQ/coupon/src/main/java/com/shun/coupon/controller/CouponController.java new file mode 100644 index 0000000..0f1de6a --- /dev/null +++ b/a-rabbitMQ/coupon/src/main/java/com/shun/coupon/controller/CouponController.java @@ -0,0 +1,22 @@ +package com.shun.coupon.controller; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author 夜灬瞬 + * @since 2023/6/19 15:55 + */ +@RestController +public class CouponController { + + /** + * 扣除优惠券 + * @throws InterruptedException 异常 + */ + @GetMapping("/coupon") + public void coupon() throws InterruptedException { + Thread.sleep(400); + System.out.println("优惠券预扣除成功!"); + } +} diff --git a/a-rabbitMQ/coupon/src/main/resources/application.yml b/a-rabbitMQ/coupon/src/main/resources/application.yml new file mode 100644 index 0000000..66f12d9 --- /dev/null +++ b/a-rabbitMQ/coupon/src/main/resources/application.yml @@ -0,0 +1,9 @@ +server: + port: 2 +spring: + application: + name: coupon + cloud: + nacos: + discovery: + server-addr: 127.0.0.1:8848 \ No newline at end of file diff --git a/a-rabbitMQ/integral/pom.xml b/a-rabbitMQ/integral/pom.xml new file mode 100644 index 0000000..402c0a9 --- /dev/null +++ b/a-rabbitMQ/integral/pom.xml @@ -0,0 +1,21 @@ + + + 4.0.0 + + com.shun + a-rabbitMQ + 0.0.1-SNAPSHOT + + + integral + 积分 + + + 8 + 8 + UTF-8 + + + \ No newline at end of file diff --git a/a-rabbitMQ/integral/src/main/java/com/shun/integral/IntegralApplication.java b/a-rabbitMQ/integral/src/main/java/com/shun/integral/IntegralApplication.java new file mode 100644 index 0000000..df9dc68 --- /dev/null +++ b/a-rabbitMQ/integral/src/main/java/com/shun/integral/IntegralApplication.java @@ -0,0 +1,17 @@ +package com.shun.integral; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; + +/** + * @author 夜灬瞬 + * @since 2023/6/19 15:50 + */ +@SpringBootApplication +@EnableDiscoveryClient +public class IntegralApplication { + public static void main(String[] args) { + SpringApplication.run(IntegralApplication.class,args); + } +} diff --git a/a-rabbitMQ/integral/src/main/java/com/shun/integral/controller/IntegralController.java b/a-rabbitMQ/integral/src/main/java/com/shun/integral/controller/IntegralController.java new file mode 100644 index 0000000..dc6cc9d --- /dev/null +++ b/a-rabbitMQ/integral/src/main/java/com/shun/integral/controller/IntegralController.java @@ -0,0 +1,22 @@ +package com.shun.integral.controller; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author 夜灬瞬 + * @since 2023/6/19 15:56 + */ +@RestController +public class IntegralController { + + /** + * 用户积分扣除 + * @throws InterruptedException 异常 + */ + @GetMapping("/up") + public void up() throws InterruptedException { + Thread.sleep(400); + System.out.println("扣除用户积分成功!!"); + } +} diff --git a/a-rabbitMQ/integral/src/main/resources/application.yml b/a-rabbitMQ/integral/src/main/resources/application.yml new file mode 100644 index 0000000..c84e320 --- /dev/null +++ b/a-rabbitMQ/integral/src/main/resources/application.yml @@ -0,0 +1,9 @@ +server: + port: 3 +spring: + application: + name: integral + cloud: + nacos: + discovery: + server-addr: 127.0.0.1:8848 \ No newline at end of file diff --git a/a-rabbitMQ/order/pom.xml b/a-rabbitMQ/order/pom.xml new file mode 100644 index 0000000..c540ded --- /dev/null +++ b/a-rabbitMQ/order/pom.xml @@ -0,0 +1,21 @@ + + + 4.0.0 + + com.shun + a-rabbitMQ + 0.0.1-SNAPSHOT + + + order + 订单 + + + 8 + 8 + UTF-8 + + + \ No newline at end of file diff --git a/a-rabbitMQ/order/src/main/java/com/shun/order/OrderApplication.java b/a-rabbitMQ/order/src/main/java/com/shun/order/OrderApplication.java new file mode 100644 index 0000000..475297e --- /dev/null +++ b/a-rabbitMQ/order/src/main/java/com/shun/order/OrderApplication.java @@ -0,0 +1,18 @@ +package com.shun.order; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; + +/** + * @author 夜灬瞬 + * @since 2023/6/19 15:49 + */ +@SpringBootApplication +@EnableDiscoveryClient +public class OrderApplication { + + public static void main(String[] args) { + SpringApplication.run(OrderApplication.class,args); + } +} diff --git a/a-rabbitMQ/order/src/main/java/com/shun/order/controller/OrderController.java b/a-rabbitMQ/order/src/main/java/com/shun/order/controller/OrderController.java new file mode 100644 index 0000000..87a89c9 --- /dev/null +++ b/a-rabbitMQ/order/src/main/java/com/shun/order/controller/OrderController.java @@ -0,0 +1,23 @@ +package com.shun.order.controller; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author 夜灬瞬 + * @since 2023/6/19 15:54 + */ +@RestController +public class OrderController { + + /** + * 创建订单 + * @throws InterruptedException 异常 + */ + @GetMapping("create") + public void create() throws InterruptedException { + Thread.sleep(400); + System.out.println("创建订单成功!"); + } + +} diff --git a/a-rabbitMQ/order/src/main/resources/application.yml b/a-rabbitMQ/order/src/main/resources/application.yml new file mode 100644 index 0000000..7e35383 --- /dev/null +++ b/a-rabbitMQ/order/src/main/resources/application.yml @@ -0,0 +1,9 @@ +server: + port: 4 +spring: + application: + name: order + cloud: + nacos: + discovery: + server-addr: 127.0.0.1:8848 \ No newline at end of file diff --git a/a-rabbitMQ/placeOrder/pom.xml b/a-rabbitMQ/placeOrder/pom.xml new file mode 100644 index 0000000..b18b11f --- /dev/null +++ b/a-rabbitMQ/placeOrder/pom.xml @@ -0,0 +1,27 @@ + + + 4.0.0 + + com.shun + a-rabbitMQ + 0.0.1-SNAPSHOT + + + placeOrder + 下单 + + + 17 + 17 + UTF-8 + + + + + org.springframework.cloud + spring-cloud-starter-loadbalancer + + + \ No newline at end of file diff --git a/a-rabbitMQ/placeOrder/src/main/java/com/shun/placeOrder/PlaceOrderApplication.java b/a-rabbitMQ/placeOrder/src/main/java/com/shun/placeOrder/PlaceOrderApplication.java new file mode 100644 index 0000000..da86298 --- /dev/null +++ b/a-rabbitMQ/placeOrder/src/main/java/com/shun/placeOrder/PlaceOrderApplication.java @@ -0,0 +1,20 @@ +package com.shun.placeOrder; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.openfeign.EnableFeignClients; + +/** + * @author 夜灬瞬 + * @since 2023/6/17 16:16 + */ +@SpringBootApplication +@EnableFeignClients +@EnableDiscoveryClient +public class PlaceOrderApplication { + + public static void main(String[] args) { + SpringApplication.run(PlaceOrderApplication.class,args); + } +} diff --git a/a-rabbitMQ/placeOrder/src/main/java/com/shun/placeOrder/client/BusinessClient.java b/a-rabbitMQ/placeOrder/src/main/java/com/shun/placeOrder/client/BusinessClient.java new file mode 100644 index 0000000..5adb11e --- /dev/null +++ b/a-rabbitMQ/placeOrder/src/main/java/com/shun/placeOrder/client/BusinessClient.java @@ -0,0 +1,20 @@ +package com.shun.placeOrder.client; + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author 夜灬瞬 + * @since 2023/6/19 15:57 + */ +@FeignClient("business") +public interface BusinessClient { + + /** + * 通知商家发货 + */ + @GetMapping("/notify") + public void notifyBusiness(); + +} diff --git a/a-rabbitMQ/placeOrder/src/main/java/com/shun/placeOrder/client/CouponClient.java b/a-rabbitMQ/placeOrder/src/main/java/com/shun/placeOrder/client/CouponClient.java new file mode 100644 index 0000000..4ea719b --- /dev/null +++ b/a-rabbitMQ/placeOrder/src/main/java/com/shun/placeOrder/client/CouponClient.java @@ -0,0 +1,19 @@ +package com.shun.placeOrder.client; + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author 夜灬瞬 + * @since 2023/6/19 15:55 + */ +@FeignClient("coupon") +public interface CouponClient { + + /** + * 扣除优惠券 + */ + @GetMapping("/coupon") + public void coupon(); +} diff --git a/a-rabbitMQ/placeOrder/src/main/java/com/shun/placeOrder/client/IntegralClient.java b/a-rabbitMQ/placeOrder/src/main/java/com/shun/placeOrder/client/IntegralClient.java new file mode 100644 index 0000000..03f92a4 --- /dev/null +++ b/a-rabbitMQ/placeOrder/src/main/java/com/shun/placeOrder/client/IntegralClient.java @@ -0,0 +1,19 @@ +package com.shun.placeOrder.client; + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author 夜灬瞬 + * @since 2023/6/19 15:56 + */ +@FeignClient("integral") +public interface IntegralClient { + + /** + * 用户积分扣除 + */ + @GetMapping("/up") + public void up() ; +} diff --git a/a-rabbitMQ/placeOrder/src/main/java/com/shun/placeOrder/client/OrderClient.java b/a-rabbitMQ/placeOrder/src/main/java/com/shun/placeOrder/client/OrderClient.java new file mode 100644 index 0000000..18a0a3a --- /dev/null +++ b/a-rabbitMQ/placeOrder/src/main/java/com/shun/placeOrder/client/OrderClient.java @@ -0,0 +1,20 @@ +package com.shun.placeOrder.client; + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author 夜灬瞬 + * @since 2023/6/19 15:54 + */ +@FeignClient("order") +public interface OrderClient { + + /** + * 创建订单 + */ + @GetMapping("create") + public void create(); + +} diff --git a/a-rabbitMQ/placeOrder/src/main/java/com/shun/placeOrder/client/StockClient.java b/a-rabbitMQ/placeOrder/src/main/java/com/shun/placeOrder/client/StockClient.java new file mode 100644 index 0000000..e4f385e --- /dev/null +++ b/a-rabbitMQ/placeOrder/src/main/java/com/shun/placeOrder/client/StockClient.java @@ -0,0 +1,20 @@ +package com.shun.placeOrder.client; + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author 夜灬瞬 + * @since 2023/6/19 15:52 + */ +@FeignClient("stock") +public interface StockClient { + + + /** + * 扣减库存 + */ + @GetMapping("/delStock") + public void delStock(); +} diff --git a/a-rabbitMQ/placeOrder/src/main/java/com/shun/placeOrder/contoller/PlaceOrderController.java b/a-rabbitMQ/placeOrder/src/main/java/com/shun/placeOrder/contoller/PlaceOrderController.java new file mode 100644 index 0000000..c24a116 --- /dev/null +++ b/a-rabbitMQ/placeOrder/src/main/java/com/shun/placeOrder/contoller/PlaceOrderController.java @@ -0,0 +1,44 @@ +package com.shun.placeOrder.contoller; + +import com.shun.placeOrder.client.*; +import jakarta.annotation.Resource; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author 夜灬瞬 + * @since 2023/6/19 15:46 + */ +@RestController +public class PlaceOrderController { + + @Resource + BusinessClient businessClient; + @Resource + CouponClient couponClient; + @Resource + IntegralClient integralClient; + @Resource + OrderClient orderClient; + @Resource + StockClient stockClient; + + @GetMapping("po") + public String po(){ + long start = System.currentTimeMillis(); + // 调用库存服务扣减商品库存 + stockClient.delStock(); + // 调用订单服务 创建订单 + orderClient.create(); + // 调用优惠券服务,预扣除优惠券 + couponClient.coupon(); + // 调用用户积分服务,预扣除用户积分 + integralClient.up(); + // 调用商家服务,通知商家用户已下单 + businessClient.notifyBusiness(); + long end = System.currentTimeMillis(); + System.out.println("耗时:" + (end - start)); + return "PlaceOrderController finish"; + + } +} diff --git a/a-rabbitMQ/placeOrder/src/main/resources/application.yml b/a-rabbitMQ/placeOrder/src/main/resources/application.yml new file mode 100644 index 0000000..ba41442 --- /dev/null +++ b/a-rabbitMQ/placeOrder/src/main/resources/application.yml @@ -0,0 +1,9 @@ +server: + port: 5 +spring: + application: + name: placeOrder + cloud: + nacos: + discovery: + server-addr: 127.0.0.1:8848 \ No newline at end of file diff --git a/a-rabbitMQ/pom.xml b/a-rabbitMQ/pom.xml new file mode 100644 index 0000000..99b3b07 --- /dev/null +++ b/a-rabbitMQ/pom.xml @@ -0,0 +1,110 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.1.0 + + + com.shun + a-rabbitMQ + 0.0.1-SNAPSHOT + pom + a-rabbitMQ + a-rabbitMQ + + placeOrder + stock + order + coupon + integral + business + + + 17 + 2022.0.0.0-RC2 + 2022.0.2 + + + + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-configuration-processor + true + + + org.projectlombok + lombok + true + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.amqp + spring-rabbit-test + test + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + + + + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + ${spring-cloud-alibaba.version} + pom + import + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + + + diff --git a/a-rabbitMQ/stock/pom.xml b/a-rabbitMQ/stock/pom.xml new file mode 100644 index 0000000..466cd98 --- /dev/null +++ b/a-rabbitMQ/stock/pom.xml @@ -0,0 +1,21 @@ + + + 4.0.0 + + com.shun + a-rabbitMQ + 0.0.1-SNAPSHOT + + + stock + 库存 + + + 17 + 17 + UTF-8 + + + \ No newline at end of file diff --git a/a-rabbitMQ/stock/src/main/java/com/shun/stock/StockApplication.java b/a-rabbitMQ/stock/src/main/java/com/shun/stock/StockApplication.java new file mode 100644 index 0000000..57efd62 --- /dev/null +++ b/a-rabbitMQ/stock/src/main/java/com/shun/stock/StockApplication.java @@ -0,0 +1,18 @@ +package com.shun.stock; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; + +/** + * @author 夜灬瞬 + * @since 2023/6/19 15:50 + */ +@SpringBootApplication +@EnableDiscoveryClient +public class StockApplication { + + public static void main(String[] args) { + SpringApplication.run(StockApplication.class,args); + } +} diff --git a/a-rabbitMQ/stock/src/main/java/com/shun/stock/controller/StockController.java b/a-rabbitMQ/stock/src/main/java/com/shun/stock/controller/StockController.java new file mode 100644 index 0000000..826cade --- /dev/null +++ b/a-rabbitMQ/stock/src/main/java/com/shun/stock/controller/StockController.java @@ -0,0 +1,31 @@ +package com.shun.stock.controller; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author 夜灬瞬 + * @since 2023/6/19 15:52 + */ +@RestController +public class StockController { + + /** + * 假设剩余库存数量 + */ + private static Integer stock = 10; + + /** + * 扣减库存 + * @throws InterruptedException 异常 + */ + @GetMapping("/delStock") + public void delStock() throws InterruptedException { + Thread.sleep(400); + stock--; + if(stock < 0){ + throw new RuntimeException("商品库存不足!"); + } + System.out.println("扣减库存成功!"); + } +} diff --git a/a-rabbitMQ/stock/src/main/resources/application.yml b/a-rabbitMQ/stock/src/main/resources/application.yml new file mode 100644 index 0000000..11b50ce --- /dev/null +++ b/a-rabbitMQ/stock/src/main/resources/application.yml @@ -0,0 +1,9 @@ +server: + port: 6 +spring: + application: + name: stock + cloud: + nacos: + discovery: + server-addr: 127.0.0.1:8848 \ No newline at end of file diff --git a/a-rabbitMQ/test.http b/a-rabbitMQ/test.http new file mode 100644 index 0000000..29e09bc --- /dev/null +++ b/a-rabbitMQ/test.http @@ -0,0 +1 @@ +GET http://localhost:5/po \ No newline at end of file diff --git a/a-rabbitMQ/说明 b/a-rabbitMQ/说明 new file mode 100644 index 0000000..aad86cc --- /dev/null +++ b/a-rabbitMQ/说明 @@ -0,0 +1 @@ + RabbitMQ 模拟电商 \ No newline at end of file