From 62978560c5cca1ab81d4e75457ae65da9f05a90e Mon Sep 17 00:00:00 2001 From: lzh Date: Tue, 13 Jan 2026 14:10:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20iot-gateway=20=E6=94=AF=E6=8C=81=20Naco?= =?UTF-8?q?s=20=E9=85=8D=E7=BD=AE=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 application.yaml 中添加 Nacos config import - 在 application-prod.yaml 中添加 Nacos 配置 - 在 docker-compose.core.yml 中注入 Nacos 环境变量 - 支持配置统一管理和动态刷新 - 与其他微服务保持架构一致性 --- .env.example | 51 +++++++++++++++++++ docker-compose.core.yml | 51 +++++++++++++++++++ .../src/main/resources/application-prod.yaml | 19 +++++++ .../src/main/resources/application.yaml | 5 ++ 4 files changed, 126 insertions(+) diff --git a/.env.example b/.env.example index d2663d7..61ca033 100644 --- a/.env.example +++ b/.env.example @@ -113,6 +113,57 @@ HEALTH_CHECK_TIMEOUT=10s HEALTH_CHECK_RETRIES=3 HEALTH_CHECK_START_PERIOD=60s +# ============ IoT Gateway 特有配置 ============ +# 注意: iot-gateway 不使用 Nacos,所有配置通过环境变量管理 + +# 消息总线类型 +IOT_MESSAGE_BUS_TYPE=redis + +# 设备 RPC 配置(调用 iot-server 微服务) +IOT_RPC_URL=http://127.0.0.1:48091 +IOT_RPC_CONNECT_TIMEOUT=30s +IOT_RPC_READ_TIMEOUT=30s + +# 设备 Token 配置(生产环境必须修改为强密钥,至少32位) +IOT_TOKEN_SECRET=viewshIotGatewayTokenSecret123456789 +IOT_TOKEN_EXPIRATION=7d + +# HTTP 协议配置 +IOT_HTTP_ENABLED=true +IOT_HTTP_PORT=8092 + +# MQTT 协议配置 +IOT_MQTT_ENABLED=true +IOT_MQTT_PORT=1883 +IOT_MQTT_MAX_MESSAGE_SIZE=8192 +IOT_MQTT_CONNECT_TIMEOUT=60 +IOT_MQTT_SSL_ENABLED=false + +# TCP 协议配置 +IOT_TCP_ENABLED=false +IOT_TCP_PORT=8091 +IOT_TCP_KEEPALIVE_TIMEOUT=30000 +IOT_TCP_MAX_CONNECTIONS=1000 +IOT_TCP_SSL_ENABLED=false + +# EMQX 协议配置(外部 MQTT Broker) +IOT_EMQX_ENABLED=false +IOT_EMQX_HTTP_PORT=8090 +IOT_EMQX_MQTT_HOST=127.0.0.1 +IOT_EMQX_MQTT_PORT=1883 +IOT_EMQX_MQTT_USERNAME=admin +IOT_EMQX_MQTT_PASSWORD=public +IOT_EMQX_MQTT_CLIENT_ID=iot-gateway-mqtt +IOT_EMQX_MQTT_SSL=false +IOT_EMQX_TRUST_ALL=false +IOT_EMQX_WILL_ENABLED=true + +# IoT Gateway 日志配置 +LOG_LEVEL_IOT_GATEWAY=INFO +LOG_LEVEL_EMQX=INFO +LOG_LEVEL_HTTP=INFO +LOG_LEVEL_MQTT=INFO + # ============ 资源限制说明 ============ # 当前配置预计总内存占用: # - 应用服务: ~4.5GB (Docker 容器) diff --git a/docker-compose.core.yml b/docker-compose.core.yml index d1e3d1e..4432306 100644 --- a/docker-compose.core.yml +++ b/docker-compose.core.yml @@ -151,10 +151,61 @@ services: environment: JAVA_OPTS: "-Xms${IOT_GATEWAY_JVM_XMS} -Xmx${IOT_GATEWAY_JVM_XMX} ${JVM_COMMON_OPTS}" SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE} + # Nacos 配置 + NACOS_SERVER_ADDR: ${NACOS_HOST}:${NACOS_PORT} + NACOS_USERNAME: ${NACOS_USERNAME} + NACOS_PASSWORD: ${NACOS_PASSWORD} + NACOS_NAMESPACE: ${NACOS_NAMESPACE} + NACOS_GROUP: DEFAULT_GROUP + # Redis 配置 REDIS_HOST: ${REDIS_HOST} REDIS_PORT: ${REDIS_PORT} REDIS_PASSWORD: ${REDIS_PASSWORD} + REDIS_DATABASE: ${REDIS_DATABASE} + REDIS_TIMEOUT: 30000ms + # RocketMQ 配置 ROCKETMQ_NAMESRV_ADDR: ${ROCKETMQ_NAMESRV_HOST}:${ROCKETMQ_NAMESRV_PORT} + # IoT 消息总线配置 + IOT_MESSAGE_BUS_TYPE: ${IOT_MESSAGE_BUS_TYPE} + # 设备 RPC 配置 + IOT_RPC_URL: ${IOT_RPC_URL} + IOT_RPC_CONNECT_TIMEOUT: ${IOT_RPC_CONNECT_TIMEOUT} + IOT_RPC_READ_TIMEOUT: ${IOT_RPC_READ_TIMEOUT} + # 设备 Token 配置 + IOT_TOKEN_SECRET: ${IOT_TOKEN_SECRET} + IOT_TOKEN_EXPIRATION: ${IOT_TOKEN_EXPIRATION} + # HTTP 协议配置 + IOT_HTTP_ENABLED: ${IOT_HTTP_ENABLED} + IOT_HTTP_PORT: ${IOT_HTTP_PORT} + # MQTT 协议配置 + IOT_MQTT_ENABLED: ${IOT_MQTT_ENABLED} + IOT_MQTT_PORT: ${IOT_MQTT_PORT} + IOT_MQTT_MAX_MESSAGE_SIZE: ${IOT_MQTT_MAX_MESSAGE_SIZE} + IOT_MQTT_CONNECT_TIMEOUT: ${IOT_MQTT_CONNECT_TIMEOUT} + IOT_MQTT_SSL_ENABLED: ${IOT_MQTT_SSL_ENABLED} + # TCP 协议配置 + IOT_TCP_ENABLED: ${IOT_TCP_ENABLED} + IOT_TCP_PORT: ${IOT_TCP_PORT} + IOT_TCP_KEEPALIVE_TIMEOUT: ${IOT_TCP_KEEPALIVE_TIMEOUT} + IOT_TCP_MAX_CONNECTIONS: ${IOT_TCP_MAX_CONNECTIONS} + IOT_TCP_SSL_ENABLED: ${IOT_TCP_SSL_ENABLED} + # EMQX 协议配置 + IOT_EMQX_ENABLED: ${IOT_EMQX_ENABLED} + IOT_EMQX_HTTP_PORT: ${IOT_EMQX_HTTP_PORT} + IOT_EMQX_MQTT_HOST: ${IOT_EMQX_MQTT_HOST} + IOT_EMQX_MQTT_PORT: ${IOT_EMQX_MQTT_PORT} + IOT_EMQX_MQTT_USERNAME: ${IOT_EMQX_MQTT_USERNAME} + IOT_EMQX_MQTT_PASSWORD: ${IOT_EMQX_MQTT_PASSWORD} + IOT_EMQX_MQTT_CLIENT_ID: ${IOT_EMQX_MQTT_CLIENT_ID} + IOT_EMQX_MQTT_SSL: ${IOT_EMQX_MQTT_SSL} + IOT_EMQX_TRUST_ALL: ${IOT_EMQX_TRUST_ALL} + IOT_EMQX_WILL_ENABLED: ${IOT_EMQX_WILL_ENABLED} + # 日志配置 + LOG_FILE_PATH: /app/logs + LOG_LEVEL_IOT_GATEWAY: ${LOG_LEVEL_IOT_GATEWAY} + LOG_LEVEL_EMQX: ${LOG_LEVEL_EMQX} + LOG_LEVEL_HTTP: ${LOG_LEVEL_HTTP} + LOG_LEVEL_MQTT: ${LOG_LEVEL_MQTT} TZ: ${TZ} volumes: - app-logs:/app/logs diff --git a/viewsh-module-iot/viewsh-module-iot-gateway/src/main/resources/application-prod.yaml b/viewsh-module-iot/viewsh-module-iot-gateway/src/main/resources/application-prod.yaml index a5381e4..8f51d00 100644 --- a/viewsh-module-iot/viewsh-module-iot-gateway/src/main/resources/application-prod.yaml +++ b/viewsh-module-iot/viewsh-module-iot-gateway/src/main/resources/application-prod.yaml @@ -1,5 +1,24 @@ --- #################### 注册中心 + 配置中心相关配置 #################### +--- #################### 注册中心 + 配置中心相关配置 #################### + +spring: + cloud: + nacos: + server-addr: ${NACOS_SERVER_ADDR:127.0.0.1:8848} + username: ${NACOS_USERNAME:} + password: ${NACOS_PASSWORD:} + discovery: + namespace: ${NACOS_NAMESPACE:} + group: ${NACOS_GROUP:DEFAULT_GROUP} + metadata: + version: 1.0.0 + config: + namespace: ${NACOS_NAMESPACE:} + group: ${NACOS_GROUP:DEFAULT_GROUP} + +--- #################### 应用配置 #################### + spring: application: name: iot-gateway-server diff --git a/viewsh-module-iot/viewsh-module-iot-gateway/src/main/resources/application.yaml b/viewsh-module-iot/viewsh-module-iot-gateway/src/main/resources/application.yaml index 3d03174..abd4247 100644 --- a/viewsh-module-iot/viewsh-module-iot-gateway/src/main/resources/application.yaml +++ b/viewsh-module-iot/viewsh-module-iot-gateway/src/main/resources/application.yaml @@ -4,6 +4,11 @@ spring: profiles: active: local # 默认激活本地开发环境 + config: + import: + - optional:classpath:application-${spring.profiles.active}.yaml # 加载【本地】配置 + - optional:nacos:${spring.application.name}-${spring.profiles.active}.yaml # 加载【Nacos】的配置 + # Redis 配置 data: redis: