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

fs2.kafka.admin.MkAdminClient.scala Maven / Gradle / Ivy

/*
 * Copyright 2018-2024 OVO Energy Limited
 *
 * SPDX-License-Identifier: Apache-2.0
 */

package fs2.kafka.admin

import cats.effect.Sync
import fs2.kafka.internal.converters.collection.*
import fs2.kafka.AdminClientSettings

import org.apache.kafka.clients.admin.AdminClient

/**
  * A capability trait representing the ability to instantiate the Java `AdminClient` that underlies
  * the fs2-kafka `KafkaAdminClient`. This is needed in order to instantiate
  * [[fs2.kafka.KafkaAdminClient]].

* * By default, the instance provided by [[MkAdminClient.mkAdminClientForSync]] will be used. * However this behaviour can be overridden, e.g. for testing purposes, by placing an alternative * implicit instance in lexical scope. */ trait MkAdminClient[F[_]] { def apply(settings: AdminClientSettings): F[AdminClient] } object MkAdminClient { implicit def mkAdminClientForSync[F[_]](implicit F: Sync[F]): MkAdminClient[F] = settings => F.blocking { AdminClient.create { (settings.properties: Map[String, AnyRef]).asJava } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy