From 061b7f2fad8fe15e26f5e65d7cd4f9755e0d5304 Mon Sep 17 00:00:00 2001 From: Dollerino Date: Fri, 18 Jul 2025 17:16:43 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A6=D0=98=D0=A2=D0=9A-255=20-=20=D0=94=D0=BE?= =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=B0?= =?UTF-8?q?=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80=D0=B0=20=D0=B2=D1=80=D0=B5?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D0=B8=20=D0=BE=D0=B6=D0=B8=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BE=D1=82=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=B2=D1=85=D0=BE=D0=B4=D1=8F=D1=89=D0=B5=D0=B3=D0=BE?= =?UTF-8?q?=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.js | 4 ++-- core/in_queue.js | 32 ++++++++++++++++++-------------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/config.js b/config.js index b744df7..9b6511a 100644 --- a/config.js +++ b/config.js @@ -71,8 +71,8 @@ let inComing = { nPoolMax: 10, //Шаг инкремента подключений к БД в пуле обработчика входящих сообщений nPoolIncrement: 0, - //Время ожидания отработки входящего сообщения (мс) - nTimeout: 120000 + //Время ожидания отработки входящего сообщения (мс, 0 - не применять (не отменяет таймаут по умолчанию, который может быть установлен платформой)) + nTimeout: 0 }; //Параметры подключения к Kafka diff --git a/core/in_queue.js b/core/in_queue.js index bf873fa..cee141a 100644 --- a/core/in_queue.js +++ b/core/in_queue.js @@ -93,8 +93,6 @@ class InQueue extends EventEmitter { //Внешние подключения this.kafkaConnections = []; this.mqttConnections = []; - //Время ожидания отработки входящего сообщения - this.nTimeout = prms.inComing.nTimeout; } else { throw new ServerError(SERR_OBJECT_BAD_INTERFACE, sCheckResult); } @@ -348,7 +346,10 @@ class InQueue extends EventEmitter { }); } else { //Или расскажем об ошибке - throw new ServerError(SERR_WEB_SERVER, "Истекло время ожидания обработки входящего запроса."); + throw new ServerError( + SERR_WEB_SERVER, + "Истекло время ожидания обработки входящего запроса. Канал закрыт. Клиенту был отправлен ответ." + ); } } catch (e) { //Тема и текст уведомления об ошибке @@ -554,18 +555,21 @@ class InQueue extends EventEmitter { if (req.headers["content-type"] === "false") req.headers["content-type"] = "application/octet-stream"; next(); }); - //Конфигурируем сервер - устанавливаем таймаут обработки сообщений - this.webApp.use((req, res, next) => { - //Устанавливаем таймаут на ответ от сервера - res.setTimeout(this.nTimeout, () => { - //Формируем ошибку - let err = new Error("Истекло время ожидания формирования ответа для завершения текущего запроса."); - err.status = 504; - //Отправляем ошибку - next(err); + //Если требуется установить таймаут на обработку сообщений + if (this.inComing.nTimeout !== 0) { + //Конфигурируем сервер - устанавливаем таймаут обработки сообщений + this.webApp.use((req, res, next) => { + //Устанавливаем таймаут на ответ от сервера + res.setTimeout(this.inComing.nTimeout, () => { + //Формируем ошибку + let err = new Error("Истекло время ожидания формирования ответа для завершения текущего запроса."); + err.status = 504; + //Отправляем ошибку + next(err); + }); + next(); }); - next(); - }); + } //Конфигурируем сервер - обработка тела сообщения this.webApp.use(bodyParser.raw({ limit: `${this.inComing.nMsgMaxSize}mb`, type: "*/*" })); //Конфигурируем сервер - обходим все сервисы, работающие на приём сообщений