async function recursivelyFetchSqsMessages()

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",
    );
  }
}