fix(iot): слить остаток буфера bridge при shutdown + безопасное закрытие канала (🔴3)

- Диспатчер получил собственный ctx (не сигнальный): при shutdown воркеры
  успевают отправить накопленное в SQS (раньше сразу возвращали «context
  canceled» и дропали остаток). Флаш ограничен bridgeFlushTimeout=10с.
- enqueue/closeAndWait синхронизированы мьютексом (closed-флаг): поздний колбэк
  paho больше не паникует на «send on closed channel».
This commit is contained in:
Repinoid
2026-10-10 19:02:30 +03:00
parent 5600646db3
commit 572988a2a1
2 changed files with 47 additions and 9 deletions
+1 -1
View File
@@ -42,7 +42,7 @@ func Run(ctx context.Context, cfg *config.Config, sqsClient *sqs.Client, log *sl
// Отправка в SQS — через диспатчер (канал + worker-пул): колбэк MQTT
// не блокируется сетью (фикс CRITICAL из ревью 2026-08-16).
dispatcher := newSQSDispatcher(sqsClient, queueURL, log)
dispatcher.start(ctx)
dispatcher.start()
handler := newMessageHandler(dispatcher, log)