diff --git a/build.sbt b/build.sbt index c9d8ee252b..dd4de89fdc 100644 --- a/build.sbt +++ b/build.sbt @@ -54,7 +54,7 @@ Global / concurrentRestrictions := Seq( Tags.limitAll(12) ) -val awsSdkVersion = "1.12.470" +val awsSdkVersion = "1.12.755" val elastic4sVersion = "8.3.0" val okHttpVersion = "3.12.1" @@ -88,7 +88,7 @@ lazy val commonLib = project("common-lib").settings( "com.gu" %% "thrift-serializer" % "5.0.2", "org.scalaz.stream" %% "scalaz-stream" % "0.8.6", "org.im4java" % "im4java" % "1.4.0", - "com.gu" % "kinesis-logback-appender" % "1.4.2", + "com.gu" % "kinesis-logback-appender" % "1.4.4", "net.logstash.logback" % "logstash-logback-encoder" % "5.0", "com.typesafe.play" %% "play-logback" % "2.8.20", // needed when running the scripts "com.typesafe.scala-logging" %% "scala-logging" % "3.9.2", diff --git a/common-lib/src/main/scala/com/gu/mediaservice/lib/aws/SimpleSqsMessageConsumer.scala b/common-lib/src/main/scala/com/gu/mediaservice/lib/aws/SimpleSqsMessageConsumer.scala index 3674600e06..9870930dd7 100644 --- a/common-lib/src/main/scala/com/gu/mediaservice/lib/aws/SimpleSqsMessageConsumer.scala +++ b/common-lib/src/main/scala/com/gu/mediaservice/lib/aws/SimpleSqsMessageConsumer.scala @@ -5,24 +5,38 @@ import com.amazonaws.services.sqs.AmazonSQS import com.amazonaws.services.sqs.AmazonSQSClientBuilder import com.amazonaws.services.sqs.model.{DeleteMessageRequest, ReceiveMessageRequest, Message => SQSMessage} +import scala.annotation.nowarn import scala.collection.JavaConverters._ class SimpleSqsMessageConsumer (queueUrl: String, config: CommonConfig) { lazy val client: AmazonSQS = config.withAWSCredentials(AmazonSQSClientBuilder.standard()).build() - def getNextMessage(attributeNames: String*): Option[SQSMessage] = - client.receiveMessage( - new ReceiveMessageRequest(queueUrl) + def getNextMessage(attributeNames: String*): Option[SQSMessage] = { + + // TO DO - try the new methods when the IngestSqsQueue is back, getstatus works and healthcheck passes + @nowarn // withAttributeNames is deprecated, but still supported. + val request = new ReceiveMessageRequest(queueUrl) .withWaitTimeSeconds(20) // Wait for maximum duration (20s) as per doc recommendation: http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-long-polling.html .withMaxNumberOfMessages(1) // Pull 1 message at a time to avoid starvation - .withAttributeNames(attributeNames: _*) - ).getMessages.asScala.headOption + .withAttributeNames(attributeNames:_*) + + client.receiveMessage(request).getMessages.asScala.headOption + } def deleteMessage(message: SQSMessage): Unit = client.deleteMessage(new DeleteMessageRequest(queueUrl, message.getReceiptHandle)) def getStatus: Map[String, String] = { + + println(queueUrl) + + println(client.getQueueAttributes(queueUrl, List( + "ApproximateNumberOfMessagesDelayed", + "ApproximateNumberOfMessages", + "ApproximateNumberOfMessagesNotVisible" + ).asJava)) + client.getQueueAttributes(queueUrl, List( "ApproximateNumberOfMessagesDelayed", "ApproximateNumberOfMessages", diff --git a/docker-compose.yml b/docker-compose.yml index 672e62bfd8..8aa31f7b10 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -20,7 +20,7 @@ services: ports: - "9090:9000" localstack: - image: localstack/localstack:0.12.3 + image: localstack/localstack:0.12.20 platform: 'linux/x86_64' ports: - "4566:4566" # localstack's service proxy endpoint