def handler()

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