Trong tìm kiếm làm thế nào để tạo ra một chủ đề Kafka qua API, tôi thấy ví dụ này trong Scala:Cách tạo Kafka ZKStringSerializer trong 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)
Nguồn: https://stackoverflow.com/a/23360100/871012
Các arg cuối cùng ZKStringSerializer
rõ ràng là một đối tượng Scala. Nó không phải là rõ ràng với tôi làm thế nào để làm cho ví dụ này làm việc trong Java.
bài này How to create a scala object in clojure hỏi cùng một câu hỏi trong Clojure và câu trả lời là:
ZKStringSerializer$/MODULE$
mà trong Java sẽ (tôi nghĩ) dịch để:
ZKStringSerializer$.MODULE$
Nhưng khi tôi cố gắng đó (hoặc bất kỳ số lượng biến thể nào khác) không có biến thể nào trong số đó được biên dịch.
Các lỗi biên dịch là:
KafkaTopicCreator.java:[16,18] cannot find symbol
symbol: variable ZKStringSerializer$
location: class org.sample.KafkaTopicCreator
Tôi đang sử dụng kafka_2.9.2-0.8.1.1 và Java 8.