W poszukiwaniu sposobu tworzenia tematu Kafka poprzez API, znalazłem ten przykład w Scala:Jak utworzyć Kafka ZKStringSerializer w Javie?
import kafka.admin.AdminUtils
import kafka.utils.ZKStringSerializer
import org.I0Itec.zkclient.ZkClient
// Create a ZooKeeper client
val sessionTimeoutMs = 10000
val connectionTimeoutMs = 10000
val zkClient = new ZkClient("zookeeper1:2181", sessionTimeoutMs,
connectionTimeoutMs, ZKStringSerializer)
// Create a topic with 8 partitions and a replication factor of 3
val topicName = "myTopic"
val numPartitions = 8
val replicationFactor = 3
val topicConfig = new Properties
AdminUtils.createTopic(zkClient, topicName,
numPartitions, replicationFactor, topicConfig)
Źródło: https://stackoverflow.com/a/23360100/871012
Ostatni arg ZKStringSerializer
widocznie obiektem Scala. Nie jest dla mnie jasne, jak sprawić, aby ten przykład działał w Javie.
Ten post How to create a scala object in clojure zadaje to samo pytanie w Clojure i odpowiedź brzmiała:
ZKStringSerializer$/MODULE$
które w Javie będzie (chyba) przekładają się na:
ZKStringSerializer$.MODULE$
Ale gdy próbuję to (lub dowolna liczba innych odmian), których żaden z nich nie kompiluje.
Błąd kompilacji:
KafkaTopicCreator.java:[16,18] cannot find symbol
symbol: variable ZKStringSerializer$
location: class org.sample.KafkaTopicCreator
Używam kafka_2.9.2-0.8.1.1 i Java 8.