ЦИТК-255 - Добавление параметра времени ожидания отработки входящего сообщения

This commit is contained in:
Dollerino 2025-07-18 17:16:43 +03:00
parent f75269ddc7
commit 061b7f2fad
2 changed files with 20 additions and 16 deletions

View File

@ -71,8 +71,8 @@ let inComing = {
nPoolMax: 10,
//Шаг инкремента подключений к БД в пуле обработчика входящих сообщений
nPoolIncrement: 0,
//Время ожидания отработки входящего сообщения (мс)
nTimeout: 120000
//Время ожидания отработки входящего сообщения (мс, 0 - не применять (не отменяет таймаут по умолчанию, который может быть установлен платформой))
nTimeout: 0
};
//Параметры подключения к Kafka

View File

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