feat(consumer): битые envelope → DLQ вместо потери

processTelemetry теперь возвращает sentinel errInvalidEnvelope при битом JSON
(раньше — молчаливый nil → mусор подтверждался и терялся). Consumer при этой
ошибке кладёт тело в DLQ (SQS_DLQ_NAME, дефолт iot-telemetry-dlq) и подтверждает
основное сообщение; без DLQ — только логирует, но НЕ подтверждает (оседает).
Добавлены SQSDLQName в config + DefaultSQSDLQName. Реальные ошибки PG (не invalid)
по-прежнему не подтверждаются и уходят в ретрай после visibility timeout.
This commit is contained in:
Repinoid
2026-10-07 07:40:09 +03:00
parent 2b3838680f
commit 4031882cae
4 changed files with 48 additions and 4 deletions
+5
View File
@@ -13,6 +13,11 @@ const (
// DefaultSQSQueueName — очередь телеметрии IoT.
DefaultSQSQueueName = "iot-telemetry"
// DefaultSQSDLQName — DLQ для «мёртвых» сообщений: битые envelope, которые
// нельзя разобрать (повторная обработка бессмысленна). Валидные данные
// идут в основную очередь; неразборчивые — сюда, а не отбрасываются.
DefaultSQSDLQName = "iot-telemetry-dlq"
// DefaultSQSRegion — регион для self-hosted SQS (не важен, оставлен для SDK).
DefaultSQSRegion = "us-east-1"