Bei der Suche nach, wie ein Kafka Thema über die API zu erstellen, fand ich dieses Beispiel in Scala:Wie erstelle ich Kafka ZKStringSerializer in Java?
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)
Quelle: https://stackoverflow.com/a/23360100/871012
Die letzten arg ZKStringSerializer
offenbar ein Scala-Objekt ist. Es ist mir nicht klar, wie dieses Beispiel in Java funktioniert.
Dieser Beitrag How to create a scala object in clojure fragt die gleiche Frage in Clojure und die Antwort war:
ZKStringSerializer$/MODULE$
die in Java würde (glaube ich) übersetzen zu:
ZKStringSerializer$.MODULE$
Aber wenn ich versuche, dass (oder eine beliebige Anzahl anderer Variationen) kompiliert keiner von ihnen.
Der Übersetzungsfehler ist:
KafkaTopicCreator.java:[16,18] cannot find symbol
symbol: variable ZKStringSerializer$
location: class org.sample.KafkaTopicCreator
I kafka_2.9.2-0.8.1.1 und Java bin mit 8.