in typescript/src/export/exportHistoricalData.ts [12:38]
async function recursivelyFetchSqsMessages(
sqsUrl: string,
remainingMessagesToFetch: number,
handleMsg: (message: Message) => void,
): Promise<void> {
if (remainingMessagesToFetch > 0) {
const request: ReceiveMessageRequest = {
QueueUrl: sqsUrl,
MaxNumberOfMessages: 10,
WaitTimeSeconds: 3,
VisibilityTimeout: 600,
};
const sqsResp = await sqs.receiveMessage(request).promise();
if (sqsResp.Messages && sqsResp.Messages.length > 0) {
sqsResp.Messages.forEach(handleMsg);
return await recursivelyFetchSqsMessages(
sqsUrl,
remainingMessagesToFetch - sqsResp.Messages.length,
handleMsg,
);
}
} else {
console.log(
"Terminating processing early as we've reached the limit of messages to fetch",
);
}
}