I have a ScheduledEvent on my lamda function for every 24 hours and then inside function, I am calling SQS to get my messages.
export class EmailNotificationProcessor { public static async run(): Promise<void> { console.log('event'); await this.getNotificationFromSqs(); } private static async getNotificationFromSqs(): Promise<void> { const messagesToDelete: DeleteMessageBatchRequestEntryList = []; const messageRequest: ReceiveMessageRequest = { QueueUrl: process.env.DID_NOTIFICATION_SQS_QUEUE, MaxNumberOfMessages:10, WaitTimeSeconds:20 } const { Messages }: ReceiveMessageResult = await receiveMessage(messageRequest); console.log('Messages', Messages); console.log('Total Messages ', Messages.length); if (Messages && Messages.length > 0) { for (const message of Messages) { console.log('body is ', message.Body); messagesToDelete.push({ Id: message.MessageId, ReceiptHandle: message.ReceiptHandle, } as DeleteMessageBatchRequestEntry); } } await deleteMessages(messagesToDelete); } } I am expecting 1 to 30 messages inside my queue and want to process all messages before sending an email which consists of the content that I will parse from sqs body.
My function for receiving messages
export const receiveMessage = async (request: SQS.ReceiveMessageRequest): Promise<PromiseResult<SQS.ReceiveMessageResult, AWSError>> =>{ console.log('inside receive'); return sqs.receiveMessage(request).promise(); } Now I am not able to receive all messages at once and only getting 3 messages or sometimes 1 message at a time.
I know limit for API call is 10 in one single request but is there any way to wait and get all your message.