Browse Source

server: Add retries to the SQSSeederTask

Don't stop consuming messages when the connection to SQS is lost,
instead, retry to connect.
scalafmt-draft
Alexis Hernandez 7 years ago
parent
commit
9dd94f299b
  1. 23
      server/app/com/xsn/explorer/tasks/SQSSeederTask.scala

23
server/app/com/xsn/explorer/tasks/SQSSeederTask.scala

@ -40,15 +40,20 @@ class SQSSeederTask @Inject() (
def run(): Unit = { def run(): Unit = {
logger.info("Starting seeder") logger.info("Starting seeder")
SqsSource(config.queueUrl, settings) def f(): Unit = {
.runWith(Sink.foreach(handleMessage)) SqsSource(config.queueUrl, settings)
.onComplete { .runWith(Sink.foreach(handleMessage))
case Failure(ex) => .onComplete {
logger.error("Failed to stream SQS messages", ex) case Failure(ex) =>
logger.error("Failed to stream SQS messages, restarting seeder", ex)
case Success(_) => f()
logger.info("SQS stream completed")
} case Success(_) =>
logger.info("SQS stream completed")
}
}
f()
} }
private def handleMessage(message: Message): Unit = { private def handleMessage(message: Message): Unit = {

Loading…
Cancel
Save