QueueClient.kt

  1. /*
  2.  * This file is part of the pl.wrzasq.commons.
  3.  *
  4.  * @license http://mit-license.org/ The MIT license
  5.  * @copyright 2020 - 2022 © by Rafał Wrzeszcz - Wrzasq.pl.
  6.  */

  7. package pl.wrzasq.commons.aws.messaging.sqs

  8. import kotlinx.serialization.json.Json
  9. import pl.wrzasq.commons.aws.messaging.MessageDispatcher
  10. import software.amazon.awssdk.services.sqs.SqsClient
  11. import software.amazon.awssdk.services.sqs.model.SendMessageResponse

  12. /**
  13.  * Queue-bound AWS SQS client.
  14.  *
  15.  * @param json JSON handler.
  16.  * @param sqs SQS client.
  17.  * @param queueUrl Target queue URL.
  18.  */
  19. class QueueClient(
  20.     json: Json = Json.Default,
  21.     sqs: SqsClient = SqsClient.create(),
  22.     queueUrl: String
  23. ) : MessageDispatcher<SendMessageResponse>(
  24.     json,
  25.     { payload -> sqs.sendMessage { it.queueUrl(queueUrl).messageBody(payload) }}
  26. )