从Java创建“KafkaServer”
我正在尝试从Java启动Kafka服务器 具体来说,我如何将Scala的代码转换成Java代码行从Java创建“KafkaServer”,java,scala,apache-kafka,Java,Scala,Apache Kafka,我正在尝试从Java启动Kafka服务器 具体来说,我如何将Scala的代码转换成Java代码行 private val server = new KafkaServer(serverConfig, kafkaMetricsReporters = reporters) 我可以轻松创建serverConfig,但似乎无法创建kafkaMetricsReporters参数 注意:我可以创建一个KafkaServerStartable,但我希望创建一个正常的KafkaServer,以避免JVM在
private val server = new KafkaServer(serverConfig, kafkaMetricsReporters = reporters)
我可以轻松创建serverConfig,但似乎无法创建kafkaMetricsReporters
参数
注意:我可以创建一个KafkaServerStartable
,但我希望创建一个正常的KafkaServer
,以避免JVM在出现错误时退出
Apache-Kafka版本0.11.0.1kafkaMetricsReporters参数是一个scala
Seq
您可以:
scala.collection.JavaConverters
:
List<KafkaMetricsReporter> reportersList = new ArrayList<>();
...
Seq<KafkaMetricsReporter> reportersSeq = JavaConverters.asScalaBufferConverter(reportersList).asScala();
KafkaServer
构造函数在从Java调用时还需要另外两个参数:
可以使用time
new org.apache.kafka.common.utils.SystemTime()轻松创建
是一个选项。如果导入threadnameffix
,则可以调用scala.Option
Option.apply(“前缀”)
Properties props = new Properties();
props.put(...);
KafkaConfig config = KafkaConfig.fromProps(props);
Seq<KafkaMetricsReporter> reporters = KafkaMetricsReporter$.MODULE$.startReporters(new VerifiableProperties(props));
KafkaServer server = new KafkaServer(config, new SystemTime(), Option.apply("prefix"), reporters);
server.startup();
Properties=newproperties();
道具。放(…);
Kafkanconfig config=Kafkanconfig.fromProps(道具);
Seq reporters=KafkaMetricsReporter$.MODULE$.startReporters(新的可验证属性(props));
KafkaServer服务器=新的KafkaServer(配置,new SystemTime(),Option.apply(“前缀”),reporters);
server.startup();
谢谢:)两个问题:你是说记者列表
而不是记者
?newsystemtime()
来自哪里(哪个软件包)?也意味着不会有记者,对吗?(我现在对此很满意,尽管我会在某个时候创建一些)我已经更新了我的答案startReporters()
可能是您想要使用的,非常感谢!我现在可以启动服务器了,尽管我仍然向它传递了一个空的reporter seq,因为我得到了未处理的java.lang.ClassNotFoundException kafka.metrics.KafkaMetricsReporter$.MODULE$
。startReporters
是静态函数吗?即使我不能调用KafkaMetricsReporter.startReporters()
,我也接受了你的答案。我有一个卡夫卡服务器在运行,这是这里的重点。谢谢
Properties props = new Properties();
props.put(...);
KafkaConfig config = KafkaConfig.fromProps(props);
Seq<KafkaMetricsReporter> reporters = KafkaMetricsReporter$.MODULE$.startReporters(new VerifiableProperties(props));
KafkaServer server = new KafkaServer(config, new SystemTime(), Option.apply("prefix"), reporters);
server.startup();