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: "*/*" })); //Конфигурируем сервер - обходим все сервисы, работающие на приём сообщений