org.apache.kafka.clients.admin.AdminClient Scala Examples
The following examples show how to use org.apache.kafka.clients.admin.AdminClient.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
Example 1
Source File: HasDex.scala From matcher with MIT License | 8 votes |
package com.wavesplatform.dex.it.dex import java.util.Properties import java.util.concurrent.ThreadLocalRandom import cats.Functor import com.typesafe.config.{Config, ConfigFactory} import com.wavesplatform.dex.it.api.BaseContainersKit import com.wavesplatform.dex.it.docker.DexContainer import com.wavesplatform.dex.it.fp.CanExtract import mouse.any._ import org.apache.kafka.clients.admin.{AdminClient, NewTopic} import scala.collection.JavaConverters._ trait HasDex { self: BaseContainersKit => private val defaultTag = Option(System.getenv("DEX_TAG")).getOrElse("latest") protected implicit def toDexExplicitGetOps[F[_]: CanExtract: Functor](self: DexApi[F]): DexApiOps.ExplicitGetDexApiOps[F] = { new DexApiOps.ExplicitGetDexApiOps[F](self) } protected def dexInitialSuiteConfig: Config = ConfigFactory.empty() protected lazy val dexRunConfig: Config = dexQueueConfig(ThreadLocalRandom.current.nextInt(0, Int.MaxValue)) protected def kafkaServer: Option[String] = Option { System.getenv("KAFKA_SERVER") } protected def dexQueueConfig(queueId: Int): Config = { kafkaServer.fold { ConfigFactory.empty() } { kafkaServer => ConfigFactory.parseString(s"""waves.dex.events-queue { | type = kafka | kafka { | servers = "$kafkaServer" | topic = "dex-$queueId" | } |}""".stripMargin) } } protected def createDex(name: String, runConfig: Config = dexRunConfig, suiteInitialConfig: Config = dexInitialSuiteConfig, tag: String = defaultTag): DexContainer = DexContainer(name, networkName, network, getIp(name), runConfig, suiteInitialConfig, localLogsDir, tag) unsafeTap addKnownContainer lazy val dex1: DexContainer = createDex("dex-1") protected def createKafkaTopic(name: String): Unit = kafkaServer.foreach { server => val properties = new Properties() properties.putAll( Map( "bootstrap.servers" -> server, "group.id" -> s"create-$name", "key.deserializer" -> "org.apache.kafka.common.serialization.StringDeserializer", "value.deserializer" -> "org.apache.kafka.common.serialization.StringDeserializer" ).asJava ) val adminClient = AdminClient.create(properties) try { val newTopic = new NewTopic(name, 1, 1.toShort) adminClient.createTopics(java.util.Collections.singletonList(newTopic)) } finally { adminClient.close() } } }
Example 2
Source File: KafkaIntSpec.scala From kafka-configurator with BSD 3-Clause "New" or "Revised" License | 5 votes |
package common import cakesolutions.kafka.testkit.KafkaServer import kafka.utils.ZkUtils import org.apache.kafka.clients.admin.AdminClient import org.apache.kafka.clients.admin.AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG import org.scalatest.BeforeAndAfterAll import org.scalatest.concurrent.PatienceConfiguration import org.scalatest.time.{ Millis, Seconds, Span } import scala.collection.JavaConverters._ import scala.concurrent.duration._ abstract class KafkaIntSpec extends BaseSpec with BeforeAndAfterAll with PatienceConfiguration { override implicit val patienceConfig = PatienceConfig(Span(3, Seconds), Span(250, Millis)) val kafkaServer = new KafkaServer() val kafkaPort = kafkaServer.kafkaPort val zkSessionTimeout = 30 seconds val zkConnectionTimeout = 30 seconds lazy val zkUtils = ZkUtils(s"localhost:${kafkaServer.zookeeperPort}", zkSessionTimeout.toMillis.toInt, zkConnectionTimeout.toMillis.toInt, isZkSecurityEnabled = false) lazy val kafkaAdminClient = AdminClient.create(Map[String, AnyRef]( BOOTSTRAP_SERVERS_CONFIG -> s"localhost:$kafkaPort" ).asJava) override def beforeAll() = kafkaServer.startup() override def afterAll() = { kafkaAdminClient.close() zkUtils.close() kafkaServer.close() } }
Example 3
Source File: KafkaTestUtils.scala From spark-kafka-writer with Apache License 2.0 | 5 votes |
package com.github.benfradet.spark.kafka.writer import java.io.File import java.net.InetSocketAddress import java.util.Arrays.asList import java.util.Properties import kafka.server.{KafkaConfig, KafkaServerStartable} import org.apache.kafka.clients.admin.{AdminClient, NewTopic} import org.apache.zookeeper.server.{NIOServerCnxnFactory, ZooKeeperServer} import scala.util.Random class KafkaTestUtils { // zk private val zkHost = "localhost" private val zkPort = 2181 private var zk: EmbeddedZookeeper = _ private var zkReady = false // kafka private val brokerHost = "localhost" private val brokerPort = 9092 private var kafkaServer: KafkaServerStartable = _ private var topicCountMap = Map.empty[String, Int] private var brokerReady = false private var kafkaAdminClient: AdminClient = _ @scala.annotation.varargs def createTopics(topics: String*): Unit = for (topic <- topics) { kafkaAdminClient.createTopics(asList(new NewTopic(topic, 1, 1: Short))) Thread.sleep(1000) topicCountMap = topicCountMap + (topic -> 1) } private def brokerProps: Properties = { val props = new Properties props.put("broker.id", "0") props.put("host.name", brokerHost) props.put("log.dir", { val dir = System.getProperty("java.io.tmpdir") + "/logDir-" + new Random().nextInt(Int.MaxValue) val f = new File(dir) f.mkdirs() dir } ) props.put("port", brokerPort.toString) props.put("zookeeper.connect", zkAddress) props.put("zookeeper.connection.timeout.ms", "10000") props.put("offsets.topic.replication.factor", "1") props } private class EmbeddedZookeeper(hostname: String, port: Int) { private val snapshotDir = { val f = new File(System.getProperty("java.io.tmpdir"), "snapshotDir-" + Random.nextInt(Int.MaxValue)) f.mkdirs() f } private val logDir = { val f = new File(System.getProperty("java.io.tmpdir"), "logDir-" + Random.nextInt(Int.MaxValue)) f.mkdirs() f } private val factory = { val zkTickTime = 500 val zk = new ZooKeeperServer(snapshotDir, logDir, zkTickTime) val f = new NIOServerCnxnFactory val maxCnxn = 16 f.configure(new InetSocketAddress(hostname, port), maxCnxn) f.startup(zk) f } def shutdown(): Unit = { factory.shutdown() snapshotDir.delete() logDir.delete() () } } }
Example 4
Source File: KafkaMessagingProvider.scala From openwhisk with Apache License 2.0 | 5 votes |
package org.apache.openwhisk.connector.kafka import java.util.Properties import akka.actor.ActorSystem import org.apache.kafka.clients.admin.{AdminClient, AdminClientConfig, NewTopic} import org.apache.kafka.common.errors.{RetriableException, TopicExistsException} import pureconfig._ import pureconfig.generic.auto._ import org.apache.openwhisk.common.{CausedBy, Logging} import org.apache.openwhisk.core.{ConfigKeys, WhiskConfig} import org.apache.openwhisk.core.connector.{MessageConsumer, MessageProducer, MessagingProvider} import org.apache.openwhisk.core.entity.ByteSize import scala.collection.JavaConverters._ import scala.concurrent.duration._ import scala.util.{Failure, Success, Try} case class KafkaConfig(replicationFactor: Short, consumerLagCheckInterval: FiniteDuration) def verifyConfig(config: Map[String, String], validKeys: Set[String])(implicit logging: Logging): Boolean = { val passedKeys = config.keySet val knownKeys = validKeys intersect passedKeys val unknownKeys = passedKeys -- knownKeys if (unknownKeys.nonEmpty) { logging.warn(this, s"potential misconfiguration, unknown settings: ${unknownKeys.mkString(",")}") false } else { true } } }
Example 5
Source File: StateStoreSpec.scala From haystack-trends with Apache License 2.0 | 5 votes |
package com.expedia.www.haystack.trends.integration.tests import com.expedia.metrics.MetricData import com.expedia.www.haystack.trends.integration.IntegrationTestSpec import org.apache.kafka.clients.admin.{AdminClient, Config} import org.apache.kafka.common.config.ConfigResource import org.apache.kafka.streams.integration.utils.IntegrationTestUtils import org.scalatest.Sequential import scala.collection.JavaConverters._ import scala.concurrent.duration._ @Sequential class StateStoreSpec extends IntegrationTestSpec { private val MAX_METRICPOINTS = 62 private val numberOfWatermarkedWindows = 1 "TimeSeriesAggregatorTopology" should { "have state store (change log) configuration be set by the topology" in { Given("a set of metricPoints with type metric and state store specific configurations") val METRIC_NAME = "success-span" // CountMetric val streamsRunner = createStreamRunner() When("metricPoints are produced in 'input' topic async, and kafka-streams topology is started") produceMetricPointsAsync(3, 10.milli, METRIC_NAME, 3 * 60) streamsRunner.start() Then("we should see the state store topic created with specified properties") val waitTimeMs = 15000 IntegrationTestUtils.waitUntilMinKeyValueRecordsReceived[String, MetricData](RESULT_CONSUMER_CONFIG, OUTPUT_TOPIC, 1, waitTimeMs).asScala.toList val adminClient = AdminClient.create(STREAMS_CONFIG) val configResource = new ConfigResource(ConfigResource.Type.TOPIC, CHANGELOG_TOPIC) val describeConfigResult: java.util.Map[ConfigResource, Config] = adminClient.describeConfigs(java.util.Arrays.asList(configResource)).all().get() describeConfigResult.get(configResource).get(stateStoreConfigs.head._1).value() shouldBe stateStoreConfigs.head._2 } } }
Example 6
Source File: KafkaSettings.scala From remora with MIT License | 5 votes |
package config import scala.collection.JavaConverters._ import com.typesafe.config.Config import org.apache.kafka.clients.CommonClientConfigs import org.apache.kafka.clients.admin.AdminClient case class KafkaSettings(address: String, commandConfig: String, adminClientProps: java.util.Properties) { lazy val adminClient: AdminClient = AdminClient.create(adminClientProps) } object KafkaSettings { def apply(config: Config): KafkaSettings = { val properties = new java.util.Properties() val adminClientConfig = config.getConfig("kafka.admin-client") .withValue(CommonClientConfigs.BOOTSTRAP_SERVERS_CONFIG, config.getValue("kafka.endpoint")) org.apache.kafka.clients.admin.AdminClientConfig.configNames().asScala.foreach { k => if (adminClientConfig.hasPath(k)) properties.put(k, adminClientConfig.getAnyRef(k)) } KafkaSettings( config.getString("kafka.endpoint"), config.getString("kafka.command.config"), properties ) } }
Example 7
Source File: EmbeddedKafkaServer.scala From affinity with Apache License 2.0 | 5 votes |
package io.amient.affinity.kafka import java.io.File import java.util.Properties import java.util.concurrent.TimeUnit import kafka.server.{KafkaConfig, KafkaServerStartable} import kafka.zk.BrokerIdZNode import org.I0Itec.zkclient.ZkClient import org.I0Itec.zkclient.serialize.ZkSerializer import org.apache.kafka.clients.admin.{AdminClient, NewTopic} import org.apache.kafka.common.network.ListenerName import org.apache.kafka.common.security.auth.SecurityProtocol import org.slf4j.LoggerFactory import scala.collection.JavaConverters._ import scala.collection.mutable trait EmbeddedKafkaServer extends EmbeddedService with EmbeddedZookeperServer { private val log = LoggerFactory.getLogger(classOf[EmbeddedKafka]) def numPartitions: Int private val embeddedKafkaPath = new File(testDir, "local-kafka-logs") private val kafkaConfig = new KafkaConfig(new Properties { put("broker.id", "1") put("host.name", "localhost") put("port", "0") put("log.dir", embeddedKafkaPath.toString) put("num.partitions", numPartitions.toString) put("auto.create.topics.enable", "false") put("delete.topic.enable", "true") put("zookeeper.connect", zkConnect) put("offsets.topic.replication.factor", "1") }) private val kafka = new KafkaServerStartable(kafkaConfig) kafka.startup() lazy val admin = AdminClient.create(Map[String, AnyRef]("bootstrap.servers" -> kafkaBootstrap).asJava) def createTopic(name: String): Unit = { admin.createTopics(List(new NewTopic(name, numPartitions, 1)).asJava).all().get(30, TimeUnit.SECONDS) } def listTopics: mutable.Set[String] = { admin.listTopics().names().get(1, TimeUnit.SECONDS).asScala } val tmpZkClient = new ZkClient(zkConnect, 5000, 6000, new ZkSerializer { def serialize(o: Object): Array[Byte] = o.toString.getBytes override def deserialize(bytes: Array[Byte]): Object = new String(bytes) }) val broker = BrokerIdZNode.decode(1, tmpZkClient.readData[String]("/brokers/ids/1").getBytes("utf-8")).broker val kafkaBootstrap = broker.brokerEndPoint(ListenerName.forSecurityProtocol(SecurityProtocol.PLAINTEXT)).connectionString() tmpZkClient.close log.info(s"Embedded Kafka $kafkaBootstrap, data dir: $testDir") abstract override def close(): Unit = try kafka.shutdown finally super.close }