processTelemetry теперь возвращает sentinel errInvalidEnvelope при битом JSON (раньше — молчаливый nil → mусор подтверждался и терялся). Consumer при этой ошибке кладёт тело в DLQ (SQS_DLQ_NAME, дефолт iot-telemetry-dlq) и подтверждает основное сообщение; без DLQ — только логирует, но НЕ подтверждает (оседает). Добавлены SQSDLQName в config + DefaultSQSDLQName. Реальные ошибки PG (не invalid) по-прежнему не подтверждаются и уходят в ретрай после visibility timeout.
38 lines
1.9 KiB
Go
38 lines
1.9 KiB
Go
package config
|
||
|
||
// Defaults — дефолтные значения env-переменных (не секреты).
|
||
// Продублированы в Dockerfile ENV.
|
||
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"
|
||
|
||
// DefaultSQSQueueName — очередь телеметрии IoT.
|
||
DefaultSQSQueueName = "iot-telemetry"
|
||
|
||
// DefaultSQSDLQName — DLQ для «мёртвых» сообщений: битые envelope, которые
|
||
// нельзя разобрать (повторная обработка бессмысленна). Валидные данные
|
||
// идут в основную очередь; неразборчивые — сюда, а не отбрасываются.
|
||
DefaultSQSDLQName = "iot-telemetry-dlq"
|
||
|
||
// DefaultSQSRegion — регион для self-hosted SQS (не важен, оставлен для SDK).
|
||
DefaultSQSRegion = "us-east-1"
|
||
|
||
// DefaultMQTTHost — внутреннее имя EMQX-контейнера на платформе.
|
||
// Реальный UUID namespace EMQX задаётся в deck-UI (MQTT_HOST) при создании.
|
||
DefaultMQTTHost = "emqx"
|
||
|
||
// DefaultMQTTPort — WebSocket-листенер EMQX (wss внутри платформы).
|
||
DefaultMQTTPort = "8083"
|
||
|
||
// DefaultMQTTWSPath — путь MQTT-over-WebSocket на EMQX.
|
||
DefaultMQTTWSPath = "/mqtt"
|
||
|
||
// DefaultMQTTClientID — clientID bridge-подключения к EMQX.
|
||
// Используется и в ACL-логике MQTT-auth.
|
||
DefaultMQTTClientID = "iot-bridge"
|
||
)
|