ЦИТК-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, nPoolMax: 10,
//Шаг инкремента подключений к БД в пуле обработчика входящих сообщений //Шаг инкремента подключений к БД в пуле обработчика входящих сообщений
nPoolIncrement: 0, nPoolIncrement: 0,
//Время ожидания отработки входящего сообщения (мс) //Время ожидания отработки входящего сообщения (мс, 0 - не применять (не отменяет таймаут по умолчанию, который может быть установлен платформой))
nTimeout: 120000 nTimeout: 0
}; };
//Параметры подключения к Kafka //Параметры подключения к Kafka

View File

@ -93,8 +93,6 @@ class InQueue extends EventEmitter {
//Внешние подключения //Внешние подключения
this.kafkaConnections = []; this.kafkaConnections = [];
this.mqttConnections = []; this.mqttConnections = [];
//Время ожидания отработки входящего сообщения
this.nTimeout = prms.inComing.nTimeout;
} else { } else {
throw new ServerError(SERR_OBJECT_BAD_INTERFACE, sCheckResult); throw new ServerError(SERR_OBJECT_BAD_INTERFACE, sCheckResult);
} }
@ -348,7 +346,10 @@ class InQueue extends EventEmitter {
}); });
} else { } else {
//Или расскажем об ошибке //Или расскажем об ошибке
throw new ServerError(SERR_WEB_SERVER, "Истекло время ожидания обработки входящего запроса."); throw new ServerError(
SERR_WEB_SERVER,
"Истекло время ожидания обработки входящего запроса. Канал закрыт. Клиенту был отправлен ответ."
);
} }
} catch (e) { } catch (e) {
//Тема и текст уведомления об ошибке //Тема и текст уведомления об ошибке
@ -554,18 +555,21 @@ class InQueue extends EventEmitter {
if (req.headers["content-type"] === "false") req.headers["content-type"] = "application/octet-stream"; if (req.headers["content-type"] === "false") req.headers["content-type"] = "application/octet-stream";
next(); next();
}); });
//Конфигурируем сервер - устанавливаем таймаут обработки сообщений //Если требуется установить таймаут на обработку сообщений
this.webApp.use((req, res, next) => { if (this.inComing.nTimeout !== 0) {
//Устанавливаем таймаут на ответ от сервера //Конфигурируем сервер - устанавливаем таймаут обработки сообщений
res.setTimeout(this.nTimeout, () => { this.webApp.use((req, res, next) => {
//Формируем ошибку //Устанавливаем таймаут на ответ от сервера
let err = new Error("Истекло время ожидания формирования ответа для завершения текущего запроса."); res.setTimeout(this.inComing.nTimeout, () => {
err.status = 504; //Формируем ошибку
//Отправляем ошибку let err = new Error("Истекло время ожидания формирования ответа для завершения текущего запроса.");
next(err); err.status = 504;
//Отправляем ошибку
next(err);
});
next();
}); });
next(); }
});
//Конфигурируем сервер - обработка тела сообщения //Конфигурируем сервер - обработка тела сообщения
this.webApp.use(bodyParser.raw({ limit: `${this.inComing.nMsgMaxSize}mb`, type: "*/*" })); this.webApp.use(bodyParser.raw({ limit: `${this.inComing.nMsgMaxSize}mb`, type: "*/*" }));
//Конфигурируем сервер - обходим все сервисы, работающие на приём сообщений //Конфигурируем сервер - обходим все сервисы, работающие на приём сообщений