From c1d984b2a937f8d3bfe94a9ec724f438994fe6bd Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Thu, 13 Aug 2026 15:41:14 +0800
Subject: [PATCH] feat(gate): 添加策略端组件开关配置
---
src/main/java/com/xcong/excoin/modules/gateApi/StatsEventProducer.java | 2 ++
src/main/java/com/xcong/excoin/modules/gateApi/HeartbeatScheduler.java | 2 ++
src/main/java/com/xcong/excoin/modules/gateApi/GateConfigPersistenceService.java | 2 ++
src/main/java/com/xcong/excoin/modules/gateApi/GateWebSocketClientManager.java | 2 ++
src/main/java/com/xcong/excoin/modules/gateApi/CommandQueueInitializer.java | 2 ++
src/main/java/com/xcong/excoin/modules/gateApi/GateCommandConsumer.java | 2 ++
src/main/java/com/xcong/excoin/modules/gateApi/GateConfigController.java | 2 ++
src/main/java/com/xcong/excoin/modules/gateApi/GateLogBuffer.java | 2 ++
src/main/resources/application.yml | 3 +++
9 files changed, 19 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/CommandQueueInitializer.java b/src/main/java/com/xcong/excoin/modules/gateApi/CommandQueueInitializer.java
index b310d5d..bdf25d2 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/CommandQueueInitializer.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/CommandQueueInitializer.java
@@ -2,6 +2,7 @@
import com.xcong.excoin.configurations.RabbitMqConfig;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.amqp.core.*;
import org.springframework.context.annotation.DependsOn;
import org.springframework.stereotype.Component;
@@ -16,6 +17,7 @@
* JAR 启动时动态创建专属命令队列 QUEUE_GATE_CMD_{apiKeyMd5}
*/
@Slf4j
+@ConditionalOnProperty(name = "app.gate.enabled", havingValue = "true", matchIfMissing = true)
@Component
@DependsOn("gateWebSocketClientManager")
public class CommandQueueInitializer {
diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/GateCommandConsumer.java b/src/main/java/com/xcong/excoin/modules/gateApi/GateCommandConsumer.java
index 89907d8..72134a6 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateCommandConsumer.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateCommandConsumer.java
@@ -5,6 +5,7 @@
import com.xcong.excoin.modules.station.model.GateCommand;
import com.xcong.excoin.modules.station.model.GateStatsEvent;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
@@ -15,6 +16,7 @@
* JAR 侧 — 消费 Station 下发的启停指令
*/
@Slf4j
+@ConditionalOnProperty(name = "app.gate.enabled", havingValue = "true", matchIfMissing = true)
@Component
public class GateCommandConsumer {
diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/GateConfigController.java b/src/main/java/com/xcong/excoin/modules/gateApi/GateConfigController.java
index db21b56..8d17b05 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateConfigController.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateConfigController.java
@@ -4,6 +4,7 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
@@ -13,6 +14,7 @@
* Gate 配置控制面板 REST 接口。
*/
@Slf4j
+@ConditionalOnProperty(name = "app.gate.enabled", havingValue = "true", matchIfMissing = true)
@RestController
@RequestMapping("/api/gate")
@Api(tags = "Gate配置管理")
diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/GateConfigPersistenceService.java b/src/main/java/com/xcong/excoin/modules/gateApi/GateConfigPersistenceService.java
index 0ceb025..7f1a9e3 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateConfigPersistenceService.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateConfigPersistenceService.java
@@ -3,6 +3,7 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
@@ -18,6 +19,7 @@
* 文件路径: config/gate-config-{md5(apiKey)}.json
*/
@Slf4j
+@ConditionalOnProperty(name = "app.gate.enabled", havingValue = "true", matchIfMissing = true)
@Service
public class GateConfigPersistenceService {
diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/GateLogBuffer.java b/src/main/java/com/xcong/excoin/modules/gateApi/GateLogBuffer.java
index 10e14db..ffd59e4 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateLogBuffer.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateLogBuffer.java
@@ -1,6 +1,7 @@
package com.xcong.excoin.modules.gateApi;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Service;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
@@ -17,6 +18,7 @@
* 最多保留 500 条日志,新客户端连接时先推送历史再持续推新日志。
*/
@Slf4j
+@ConditionalOnProperty(name = "app.gate.enabled", havingValue = "true", matchIfMissing = true)
@Service
public class GateLogBuffer {
diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/GateWebSocketClientManager.java b/src/main/java/com/xcong/excoin/modules/gateApi/GateWebSocketClientManager.java
index f319008..8232dda 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateWebSocketClientManager.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateWebSocketClientManager.java
@@ -5,6 +5,7 @@
import com.xcong.excoin.modules.gateApi.wsHandler.handler.PositionClosesChannelHandler;
import com.xcong.excoin.modules.gateApi.wsHandler.handler.PositionsChannelHandler;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -42,6 +43,7 @@
* @author Administrator
*/
@Slf4j
+@ConditionalOnProperty(name = "app.gate.enabled", havingValue = "true", matchIfMissing = true)
@Component
public class GateWebSocketClientManager {
diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/HeartbeatScheduler.java b/src/main/java/com/xcong/excoin/modules/gateApi/HeartbeatScheduler.java
index 26cbd5c..78e642c 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/HeartbeatScheduler.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/HeartbeatScheduler.java
@@ -3,6 +3,7 @@
import com.xcong.excoin.modules.station.model.GateStatsEvent;
import com.xcong.excoin.modules.station.model.HeartbeatMsg;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@@ -15,6 +16,7 @@
* JAR 侧 — 心跳定时发送(每 30s)
*/
@Slf4j
+@ConditionalOnProperty(name = "app.gate.enabled", havingValue = "true", matchIfMissing = true)
@Component
@EnableScheduling
public class HeartbeatScheduler {
diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/StatsEventProducer.java b/src/main/java/com/xcong/excoin/modules/gateApi/StatsEventProducer.java
index 6d38665..d30d42d 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/StatsEventProducer.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/StatsEventProducer.java
@@ -4,6 +4,7 @@
import com.xcong.excoin.configurations.RabbitMqConfig;
import com.xcong.excoin.modules.station.model.GateStatsEvent;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.amqp.rabbit.connection.CorrelationData;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
@@ -15,6 +16,7 @@
* JAR 侧 — 统一消息发送器(心跳 / ACK / 策略事件 / Stats)
*/
@Slf4j
+@ConditionalOnProperty(name = "app.gate.enabled", havingValue = "true", matchIfMissing = true)
@Component
public class StatsEventProducer {
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index e7c31eb..cd28b9e 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -92,6 +92,9 @@
app:
debug: false
redis_expire: 3000
+ # gate 策略端组件开关:false=屏蔽策略组件加载(Station 用);策略 JAR 分支保持默认(不设或 true)
+ gate:
+ enabled: false
# k线更新任务控制
kline-update-job: false
#最新价任务控制
--
Gitblit v1.9.1