in payment-failure/src/main/scala/com/gu/identity/paymentfailure/Lambda.scala [50:75]
def handler(event: SQSEvent, context: Context): Unit = {
LambdaService.setAWSRequestId(context)
logger.info(s"received ${event.getRecords.size} messages - context: $context - event: $event")
logger.info("initialising config and lambda service")
val config = getConfig.valueOr { err =>
logger.error("unable to get config", err)
throw err
}
val lambdaService = LambdaService.default(config)
logger.info("config and services successfully initialised - processing events")
lambdaService.processEvent(event)
.fold(
// If there are any errors in processing the event, throw an exception.
// In which case, AWS will automatically put any messages handled by the respective lambda invocation
// back on the queue (so they can be retried), or dead letter queue if max retries have been exceeded.
// Note that messages that have been successfully processed won't be put back on the queue,
// since we explicitly delete them from the queue (see LambdaService::processMessage()).
logAndThrowErrors,
_ => logger.info("event successfully processed")
)
}