All Downloads are FREE. Search and download functionalities are using the official Maven repository.

akka.stream.alpakka.kinesis.KinesisSchedulerSettings.scala Maven / Gradle / Ivy

/*
 * Copyright (C) since 2016 Lightbend Inc. 
 */

package akka.stream.alpakka.kinesis

import scala.concurrent.duration._

final class KinesisSchedulerSourceSettings private (val bufferSize: Int, val backpressureTimeout: FiniteDuration) {
  require(
    bufferSize >= 1,
    "Buffer size must be greater than 0; use size 1 to disable stage buffering"
  )
  def withBufferSize(size: Int): KinesisSchedulerSourceSettings =
    KinesisSchedulerSourceSettings(size, backpressureTimeout)
  def withBackpressureTimeout(timeout: java.time.Duration): KinesisSchedulerSourceSettings =
    KinesisSchedulerSourceSettings(bufferSize, FiniteDuration.apply(timeout.toMillis, MILLISECONDS))
}
final class KinesisSchedulerCheckpointSettings private (val maxBatchSize: Int, val maxBatchWait: FiniteDuration) {
  require(
    maxBatchSize >= 1,
    "Batch size must be greater than 0; use size 1 to commit records one at a time"
  )

  def withMaxBatchSize(size: Int): KinesisSchedulerCheckpointSettings =
    KinesisSchedulerCheckpointSettings(size, maxBatchWait)
  def withMaxBatchWait(duration: java.time.Duration): KinesisSchedulerCheckpointSettings =
    KinesisSchedulerCheckpointSettings(maxBatchSize, FiniteDuration.apply(duration.toMillis, MILLISECONDS))
}

object KinesisSchedulerSourceSettings {

  def apply(bufferSize: Int, backpressureTimeout: FiniteDuration): KinesisSchedulerSourceSettings =
    new KinesisSchedulerSourceSettings(bufferSize, backpressureTimeout)
  def apply: KinesisSchedulerSourceSettings = defaults

  val defaults: KinesisSchedulerSourceSettings = KinesisSchedulerSourceSettings(1000, 1.minute)

  /**
   * Java API
   */
  def create(bufferSize: Int, backpressureTimeout: java.time.Duration): KinesisSchedulerSourceSettings =
    apply(bufferSize, FiniteDuration.apply(backpressureTimeout.toMillis, MILLISECONDS))

}

object KinesisSchedulerCheckpointSettings {

  def apply(maxBatchSize: Int, maxBatchWait: FiniteDuration): KinesisSchedulerCheckpointSettings =
    new KinesisSchedulerCheckpointSettings(maxBatchSize, maxBatchWait)
  def apply: KinesisSchedulerCheckpointSettings = defaults

  val defaults: KinesisSchedulerCheckpointSettings = KinesisSchedulerCheckpointSettings(1000, 10.seconds)

  /**
   * Java API
   */
  def create(maxBatchSize: Int, maxBatchWait: java.time.Duration): KinesisSchedulerCheckpointSettings =
    apply(maxBatchSize, FiniteDuration.apply(maxBatchWait.toMillis, MILLISECONDS))

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy