From fc3866f4ec9c959b82531f4c942d3738b679aa72 Mon Sep 17 00:00:00 2001 From: greatSumini Date: Tue, 26 Oct 2021 03:27:59 +0900 Subject: [PATCH] enhance: update queueService.receive to return messages asap --- src/services/queue.service.ts | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/services/queue.service.ts b/src/services/queue.service.ts index 1a30959..d07a022 100644 --- a/src/services/queue.service.ts +++ b/src/services/queue.service.ts @@ -38,16 +38,23 @@ const sendBatch = (queueName: string, query: Record) => { const receive = async (queueName: string, query: Record) => { const { MaxNumberOfMessages = '1', WaitTimeSeconds = '20' } = query; - await new Promise((resolve) => - setTimeout(resolve, Number(WaitTimeSeconds) * 1000) - ); - - const messages = queueRepository - .get(queueName) - .messages.slice(0, Number(MaxNumberOfMessages)); + let count = 0; + do { + const messages = queueRepository + .get(queueName) + .messages.slice(0, Number(MaxNumberOfMessages)); + + if (messages.length > 0) { + return { + Message: messages.map((message) => message.toOutput()), + }; + } else { + await new Promise((resolve) => setTimeout(resolve, 1000)); + } + } while (++count < Number(WaitTimeSeconds)); return { - Message: messages.map((message) => message.toOutput()), + Message: [], }; };