From 7b298b51d7be963e1cc8480bdfff6dd83714f55b Mon Sep 17 00:00:00 2001 From: Dollerino Date: Wed, 1 Nov 2023 18:52:57 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A6=D0=98=D0=A2=D0=9A-759=20-=20=D0=98=D1=81?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE?= =?UTF-8?q?=D1=88=D0=B8=D0=B1=D0=BA=D0=B8=20=D1=81=D1=87=D0=B8=D1=82=D1=8B?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BE=D1=87=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D0=B4=D0=B8=20=D0=BE=D0=B1=D0=BC=D0=B5=D0=BD=D0=B0=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=20=D1=81=D0=B1=D1=80=D0=BE=D1=88=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D0=BE=D0=B9=20=D0=B3=D0=B0=D0=BB=D0=BA=D0=B5=20"=D0=A1=D0=BE?= =?UTF-8?q?=D1=85=D1=80=D0=B0=D0=BD=D1=8F=D1=82=D1=8C=20=D1=83=D1=81=D0=BF?= =?UTF-8?q?=D0=B5=D1=88=D0=BD=D0=BE=D0=B5=20=D0=B2=D1=8B=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B2=20=D0=BE=D1=87=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=B4=D0=B8"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/in_queue.js | 4 ++-- core/out_queue.js | 7 +++++-- core/out_queue_processor.js | 8 ++++---- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/core/in_queue.js b/core/in_queue.js index 15fd297..78c77b8 100644 --- a/core/in_queue.js +++ b/core/in_queue.js @@ -312,14 +312,14 @@ class InQueue extends EventEmitter { if (optionsResp.headers) prms.res.set(optionsResp.headers); prms.res.status(optionsResp.statusCode || 200).send(blResp); } + //Фиксируем успех обработки - в протоколе работы сервиса + await this.logger.info(`Входящее сообщение ${q.nId} успешно отработано`, { nQueueId: q.nId }); //Фиксируем успех обработки - в статусе сообщения q = await this.dbConn.setQueueState({ nQueueId: q.nId, nIncExecCnt: NINC_EXEC_CNT_YES, nExecState: objQueueSchema.NQUEUE_EXEC_STATE_OK }); - //Фиксируем успех обработки - в протоколе работы сервиса - await this.logger.info(`Входящее сообщение ${q.nId} успешно отработано`, { nQueueId: q.nId }); } catch (e) { //Тема и текст уведомления об ошибке let sSubject = `Ошибка обработки входящего сообщения сервером приложений для функции "${prms.function.sCode}" сервиса "${prms.service.sCode}"`; diff --git a/core/out_queue.js b/core/out_queue.js index cb828a2..1c60d8b 100644 --- a/core/out_queue.js +++ b/core/out_queue.js @@ -247,8 +247,11 @@ class OutQueue extends EventEmitter { const proc = ChildProcess.fork("core/out_queue_processor", { silent: false }); //Перехват сообщений обработчика proc.on("message", async result => { - //Считываем сообщение изменённое обработчиком - prms.queue = await self.dbConn.getQueue({ nQueueId: prms.queue.nId }); + //Перечитывание не требуется, если выполнено успешно + if (result.sResult !== objOutQueueProcessorSchema.STASK_RESULT_OK) { + //Перечитываем запись очереди с учетом изменения статуса + prms.queue = await self.dbConn.getQueue({ nQueueId: prms.queue.nId }); + } //Проверяем структуру полученного сообщения let sCheckResult = validateObject( result, diff --git a/core/out_queue_processor.js b/core/out_queue_processor.js index 4f64459..05c09dc 100644 --- a/core/out_queue_processor.js +++ b/core/out_queue_processor.js @@ -435,16 +435,16 @@ const dbProcess = async prms => { //Если результат - ошибка аутентификации, то и её пробрасываем, но с правильным кодом if (prcRes.sResult == objQueueSchema.SPRC_RESP_RESULT_UNAUTH) throw new ServerError(SERR_UNAUTH, prcRes.sMsg || "Нет аутентификации"); } + //Фиксируем успешное исполнение сервером БД - в протоколе работы сервиса + await logger.info(`Исходящее сообщение ${prms.queue.nId} успешно отработано сервером БД`, { + nQueueId: prms.queue.nId + }); //Фиксируем успешное исполнение (полное - дальше обработки нет) - в статусе сообщения res = await dbConn.setQueueState({ nQueueId: prms.queue.nId, nIncExecCnt: prms.queue.nExecCnt == 0 ? NINC_EXEC_CNT_YES : NINC_EXEC_CNT_NO, nExecState: objQueueSchema.NQUEUE_EXEC_STATE_OK }); - //Фиксируем успешное исполнение сервером БД - в протоколе работы сервиса - await logger.info(`Исходящее сообщение ${prms.queue.nId} успешно отработано сервером БД`, { - nQueueId: prms.queue.nId - }); } catch (e) { //Если была ошибка аутентификации - возвращаем на повторную обработку сервером приложений if (e instanceof ServerError && e.sCode == SERR_UNAUTH) {