zio.kafka.producer.ProducerSettings.scala Maven / Gradle / Ivy
The newest version!
package zio.kafka.producer
import org.apache.kafka.clients.producer.ProducerConfig
import zio._
import zio.kafka.security.KafkaCredentialStore
final case class ProducerSettings(
closeTimeout: Duration = 30.seconds,
sendBufferSize: Int = 4096,
properties: Map[String, AnyRef] = Map.empty
) {
def driverSettings: Map[String, AnyRef] = properties
def withBootstrapServers(servers: List[String]): ProducerSettings =
withProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, servers.mkString(","))
def withClientId(clientId: String): ProducerSettings =
withProperty(ProducerConfig.CLIENT_ID_CONFIG, clientId)
def withCloseTimeout(duration: Duration): ProducerSettings =
copy(closeTimeout = duration)
def withProperty(key: String, value: AnyRef): ProducerSettings =
copy(properties = properties + (key -> value))
def withProperties(kvs: (String, AnyRef)*): ProducerSettings =
withProperties(kvs.toMap)
def withProperties(kvs: Map[String, AnyRef]): ProducerSettings =
copy(properties = properties ++ kvs)
def withCredentials(credentialsStore: KafkaCredentialStore): ProducerSettings =
withProperties(credentialsStore.properties)
def withSendBufferSize(sendBufferSize: Int) = copy(sendBufferSize = sendBufferSize)
}
object ProducerSettings {
def apply(
bootstrapServers: List[String]
): ProducerSettings =
ProducerSettings().withBootstrapServers(bootstrapServers)
}