SQS Client
The client exposes four methods
case class FifoQueueConfiguration(messageGroupId: String, messageDeduplicationId: String)
def sendMessage[T](queueUrl: String)(message: T, potentialFifoConfiguration: Option[FifoQueueConfiguration] = None, delaySeconds: Int = 0)(using enc: Encoder[T]): F[SendMessageResponse]
def receiveMessages[T](queueUrl: String, maxNumberOfMessages: Int = 10)(implicit dec: Decoder[T]): F[List[MessageResponse[T]]]
def deleteMessage(queueUrl: String, receiptHandle: String): F[DeleteMessageResponse]
def getQueueAttributes(queueUrl: String, attributeNames: List[QueueAttributeName] = List(QueueAttributeName.ALL)): F[GetQueueAttributesResponse]
The sendMessage method takes a case class and requires an implicit circe encoder to serialise the case class to JSON. There is an optional parameter to take a message group ID and deduplication id if we’re sending to a FIFO queue.
The receiveMessages method takes a type parameter and an implicit circe decoder which is used to decode the message json into type T
The deleteMessages method deletes a single message with the provided receipt handle.
The getQueueAttributes method returns requested attributes of the queue. There is an optional parameter to take a list of attribute names. If omitted, it retrieves ALL
attributes of the queue.