fix(config): дефолт SQS_ENDPOINT -> https://sqs.sinefo.ru; MQTT_HOST теперь обязателен (пустой дефолт — EMQX в другом namespace)
This commit is contained in:
+1
-1
@@ -24,7 +24,7 @@ USER 65532:65532
|
||||
EXPOSE 9090
|
||||
|
||||
ENV API_PORT=9090 \
|
||||
SQS_ENDPOINT=http://containerk8s.f1ffb134-7d16-45bd-8bef-69f6ec8ab33c.svc.cluster.local:4100 \
|
||||
SQS_ENDPOINT=https://sqs.sinefo.ru \
|
||||
SQS_QUEUE_NAME=iot-telemetry \
|
||||
SQS_REGION=us-east-1 \
|
||||
SQS_LONG_POLL_SECONDS=20 \
|
||||
|
||||
@@ -123,13 +123,17 @@ func Load() (*Config, error) {
|
||||
LogLevel: parseLogLevel(os.Getenv("LOG_LEVEL"), slog.LevelInfo),
|
||||
}
|
||||
|
||||
// MQTT broker URL: либо полный MQTT_BROKER_URL, либо из HOST/PORT/WS_PATH
|
||||
// MQTT broker URL: либо полный MQTT_BROKER_URL, либо из HOST/PORT/WS_PATH.
|
||||
// MQTT_HOST обязателен: EMQX в другом namespace платформы, дефолта нет
|
||||
// (см. DefaultMQTTHost).
|
||||
cfg.MQTTBrokerURL = os.Getenv("MQTT_BROKER_URL")
|
||||
if cfg.MQTTBrokerURL == "" {
|
||||
host := getEnv("MQTT_HOST", DefaultMQTTHost)
|
||||
port := getEnv("MQTT_PORT", DefaultMQTTPort)
|
||||
path := getEnv("MQTT_WS_PATH", DefaultMQTTWSPath)
|
||||
cfg.MQTTBrokerURL = "ws://" + host + ":" + port + path
|
||||
if host != "" {
|
||||
cfg.MQTTBrokerURL = "ws://" + host + ":" + port + path
|
||||
}
|
||||
} else if !strings.HasPrefix(cfg.MQTTBrokerURL, "ws://") &&
|
||||
!strings.HasPrefix(cfg.MQTTBrokerURL, "wss://") {
|
||||
return nil, fmt.Errorf("MQTT_BROKER_URL must start with ws:// or wss://, got %q", cfg.MQTTBrokerURL)
|
||||
@@ -139,6 +143,9 @@ func Load() (*Config, error) {
|
||||
if cfg.IOTPGDSN == "" {
|
||||
missing = append(missing, "IOT_PG_DSN")
|
||||
}
|
||||
if cfg.MQTTBrokerURL == "" {
|
||||
missing = append(missing, "MQTT_HOST (или MQTT_BROKER_URL)")
|
||||
}
|
||||
if cfg.SQSAccessKey == "" {
|
||||
missing = append(missing, "SQS_ACCESS_KEY")
|
||||
}
|
||||
|
||||
@@ -6,9 +6,9 @@ const (
|
||||
// DefaultAPIPort — единственный порт контейнера: API + /health + /metrics.
|
||||
DefaultAPIPort = "9090"
|
||||
|
||||
// DefaultSQSEndpoint — внутренний адрес shared-sqs в том же кластере Nubes.
|
||||
// Обходит внешний шлюз платформы (таймауты 31-33с, MSS 1448, ~150с).
|
||||
DefaultSQSEndpoint = "http://containerk8s.f1ffb134-7d16-45bd-8bef-69f6ec8ab33c.svc.cluster.local:4100"
|
||||
// DefaultSQSEndpoint — публичный endpoint shared-sqs (ВМ 213), внешний доступ
|
||||
// обязателен: shared-sqs живёт НЕ в кластере Nubes. Переопределяется SQS_ENDPOINT.
|
||||
DefaultSQSEndpoint = "https://sqs.sinefo.ru"
|
||||
|
||||
// DefaultSQSQueueName — очередь телеметрии IoT.
|
||||
DefaultSQSQueueName = "iot-telemetry"
|
||||
@@ -21,9 +21,11 @@ const (
|
||||
// DefaultSQSRegion — регион для self-hosted SQS (не важен, оставлен для SDK).
|
||||
DefaultSQSRegion = "us-east-1"
|
||||
|
||||
// DefaultMQTTHost — внутреннее имя EMQX-контейнера на платформе.
|
||||
// Реальный UUID namespace EMQX задаётся в deck-UI (MQTT_HOST) при создании.
|
||||
DefaultMQTTHost = "emqx"
|
||||
// DefaultMQTTHost — пусто: вменяемого дефолта нет, EMQX живёт в ДРУГОМ
|
||||
// namespace платформы и доступен только по FQDN
|
||||
// containerk8s.<instanceUid EMQX>.svc.cluster.local. Поэтому MQTT_HOST обязателен
|
||||
// (задаётся Terraform'ом из state EMQX), иначе config.Load вернёт ошибку.
|
||||
DefaultMQTTHost = ""
|
||||
|
||||
// DefaultMQTTPort — WebSocket-листенер EMQX (wss внутри платформы).
|
||||
DefaultMQTTPort = "8083"
|
||||
|
||||
Reference in New Issue
Block a user