diff --git a/broker.conf b/broker.conf
new file mode 100644
index 0000000..d1e694e
--- /dev/null
+++ b/broker.conf
@@ -0,0 +1 @@
+"brokerIP1=127.0.0.1"
diff --git a/docker-compose.yml b/docker-compose.yml
index 75e59d4..af0825e 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,61 +1,62 @@
-version: '3.8'
-
services:
- # NameServer 服务
- rocketmq-namesrv:
- image: apache/rocketmq:5.2.0
- container_name: rocketmq-namesrv
+ rmqnamesrv:
+ image: apache/rocketmq:5.3.2 # 或换成 5.2.0,如果你必须用这个版本
+ container_name: rmqnamesrv
+ restart: unless-stopped
ports:
- "9876:9876"
- # 移除挂载配置
+ environment:
+ - TZ=Asia/Shanghai
+ - JAVA_OPT_EXT=-Xms512m -Xmx512m -Xmn256m
command: sh mqnamesrv
- restart: always
networks:
- - rocketmq-network
+ - rmq
+
+ rmqbroker:
+ image: apache/rocketmq:5.3.2
+ container_name: rmqbroker
+ restart: unless-stopped
+ ports:
+ - "10911:10911" # FastRemoting 端口(客户端主要连接这里)
+ - "10909:10909" # HA 端口(可选)
environment:
- TZ=Asia/Shanghai
- # 调整JVM内存,避免内存不足
- - ROCKETMQ_OPT="-Xms256m -Xmx256m -Xmn128m"
-
- # Broker 服务
- rocketmq-broker:
- image: apache/rocketmq:5.2.0
- container_name: rocketmq-broker
- ports:
- - "10911:10911"
- - "10909:10909"
- # 移除挂载配置,直接通过环境变量传递核心配置
+ - NAMESRV_ADDR=rmqnamesrv:9876
+ - JAVA_OPT_EXT=-Xms1g -Xmx1g -Xmn512m
+ depends_on:
+ - rmqnamesrv
command: >
- sh mqbroker -n rocketmq-namesrv:9876
- -c /home/rocketmq/conf/broker.conf
- -Drocketmq.broker.ip1=你的服务器IP
- -Drocketmq.broker.autoCreateTopicEnable=true
- -Drocketmq.broker.autoCreateSubscriptionGroup=true
- depends_on:
- - rocketmq-namesrv
- environment:
- - TZ=Asia/Shanghai
- - NAMESRV_ADDR=rocketmq-namesrv:9876
- - ROCKETMQ_OPT="-Xms512m -Xmx512m -Xmn256m"
- restart: always
+ sh -c "
+ echo '
+ brokerClusterName = DefaultCluster
+ brokerName = broker-a
+ brokerId = 0
+ deleteWhen = 04
+ fileReservedTime = 48
+ brokerRole = ASYNC_MASTER
+ flushDiskType = ASYNC_FLUSH
+ autoCreateTopicEnable = true
+ autoCreateSubscriptionGroup = true
+ ' > /home/rocketmq/rocketmq-5.3.2/conf/broker.conf &&
+ mqbroker -n rmqnamesrv:9876 -c /home/rocketmq/rocketmq-5.3.2/conf/broker.conf
+ "
networks:
- - rocketmq-network
+ - rmq
- # RocketMQ 控制台(端口改为8083)
- rocketmq-dashboard:
- image: apacherocketmq/rocketmq-dashboard:2.0.0
- container_name: rocketmq-dashboard
+ rmqdashboard:
+ image: apacherocketmq/rocketmq-dashboard:latest
+ container_name: rmqdashboard
+ restart: unless-stopped
ports:
- - "8083:8080" # 宿主机8083端口映射到容器8080
+ - "18080:8080" # 主机端口改成 18080,避免与你其他服务冲突
environment:
- - NAMESRV_ADDR=rocketmq-namesrv:9876
- TZ=Asia/Shanghai
+ - JAVA_OPTS=-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Xms512m -Xmx512m
depends_on:
- - rocketmq-namesrv
- restart: always
+ - rmqnamesrv
networks:
- - rocketmq-network
+ - rmq
networks:
- rocketmq-network:
+ rmq:
driver: bridge
\ No newline at end of file
diff --git a/javamemories-common/pom.xml b/javamemories-common/pom.xml
index b5f6199..1352696 100644
--- a/javamemories-common/pom.xml
+++ b/javamemories-common/pom.xml
@@ -24,5 +24,16 @@
3.8.1
test
+
+ org.projectlombok
+ lombok
+ provided
+
+
+ org.jetbrains
+ annotations
+ 13.0
+ compile
+
diff --git a/javamemories-common/src/main/java/cn/mayiming/Common/Entity/StockDeductDTO.java b/javamemories-common/src/main/java/cn/mayiming/Common/Entity/StockDeductDTO.java
new file mode 100644
index 0000000..20537e8
--- /dev/null
+++ b/javamemories-common/src/main/java/cn/mayiming/Common/Entity/StockDeductDTO.java
@@ -0,0 +1,14 @@
+package cn.mayiming.Common.Entity;
+
+
+import lombok.Data;
+import org.jetbrains.annotations.NotNull;
+
+@Data
+public class StockDeductDTO {
+ @NotNull
+ private Long id;
+
+ @NotNull
+ private Integer deductNum;
+}
diff --git a/javamemories-gateway/src/main/resources/application.yml b/javamemories-gateway/src/main/resources/application.yml
index 19ffbfa..28a9165 100644
--- a/javamemories-gateway/src/main/resources/application.yml
+++ b/javamemories-gateway/src/main/resources/application.yml
@@ -44,6 +44,22 @@ spring:
# 按 IP 限流(默认)
key-resolver: "#{@ipKeyResolver}"
+ - id: stock-service
+ uri: lb://stock-service
+ predicates:
+ - Path=/stock/**
+ filters:
+ - RewritePath=/stock/(?.*), /${segment}
+ # 全局限流配置
+ - name: RequestRateLimiter
+ args:
+ # 令牌桶填充速率:每秒生成 1 个令牌(即 10 秒 10 个)
+ redis-rate-limiter.replenishRate: 1
+ # 令牌桶最大容量:最多存 10 个令牌(允许突发 10 次请求)
+ redis-rate-limiter.burstCapacity: 10
+ # 按 IP 限流(默认)
+ key-resolver: "#{@ipKeyResolver}"
+
sentinel:
# Sentinel 控制台地址(如果启动了控制台,用于可视化配置)
transport:
diff --git a/order-service/pom.xml b/order-service/pom.xml
index b2fecf4..a570083 100644
--- a/order-service/pom.xml
+++ b/order-service/pom.xml
@@ -78,5 +78,9 @@
mysql-connector-j
runtime
+
+ org.apache.rocketmq
+ rocketmq-spring-boot-starter
+
diff --git a/order-service/src/main/java/cn/mayiming/Controller/OrderController.java b/order-service/src/main/java/cn/mayiming/Controller/OrderController.java
index efbab80..97d5b1f 100644
--- a/order-service/src/main/java/cn/mayiming/Controller/OrderController.java
+++ b/order-service/src/main/java/cn/mayiming/Controller/OrderController.java
@@ -3,27 +3,77 @@ package cn.mayiming.Controller;
import cn.mayiming.Service.OrderService;
import cn.mayiming.entity.Order;
+import cn.mayiming.entity.Result;
+import cn.mayiming.entity.StockDeductDTO;
import cn.mayiming.entity.User;
import com.alibaba.csp.sentinel.annotation.SentinelResource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
+import java.util.Map;
@RestController
+@RequestMapping("/order")
public class OrderController {
@Autowired
private OrderService orderService;
- @PostMapping("/order")
+ @PostMapping("/search")
public User getUserOrder(@RequestBody User user){
//throw new RuntimeException("Cuowu ");
return orderService.SearchUserbyname(user);
}
- @GetMapping("/order")
+ @GetMapping("/list")
public List getUserOrder(@RequestParam Integer id){
return orderService.OrderListById(id);
}
+
+ @PostMapping("/create")
+ public Result