如何将Kafka Streams的Scala API定义为build.sbt中的依赖项?

sac*_*cha 2 scala apache-kafka apache-kafka-streams kafka-streams-scala

我正在尝试启动一个新的SBT Scala项目并在build.sbt文件中包含以下内容:

name := "ScalaKafkaStreamsDemo"
version := "1.0"
scalaVersion := "2.12.1"

libraryDependencies += "javax.ws.rs" % "javax.ws.rs-api" % "2.1" artifacts(Artifact("javax.ws.rs-api", "jar", "jar"))

libraryDependencies += "org.apache.kafka" %% "kafka" % "2.0.0"
libraryDependencies += "org.apache.kafka" % "kafka-streams" % "2.0.0"
Run Code Online (Sandbox Code Playgroud)

所以根据GitHub repo,在2.0.0中我应该看到我想要使用的Scala类/函数等,但它们似乎似乎不可用.在IntelliJ中我可以打开kafka-streams-2.0.0.jar,但我没有看到任何Scala类.

我需要包含另一个JAR吗?

就在我们讨论额外JAR的问题时,是否有人知道我需要包含哪些JAR才能使用EmbeddedKafkaCluster

小智 7

你需要的工具是kafka-streams-scala:

libraryDependencies += "org.apache.kafka" %% "kafka-streams-scala" % "2.0.1"
Run Code Online (Sandbox Code Playgroud)

(请使用2.0.1,甚至更好的2.1.0,因为2.0.0有一些scala API错误)

要回答你的后一个问题,它在test-jar中,您可以使用分类器来解决:

libraryDependencies += "org.apache.kafka" %% "kafka-streams" % "2.0.1" % "test" classifier "test"
Run Code Online (Sandbox Code Playgroud)

但请注意,这是一个内部类,可能会更改(或删除),恕不另行通知.如果可能的话,强烈建议您在test-utils中使用TopologyTestDriver:

libraryDependencies += "org.apache.kafka" %% "kafka-streams-test-utils" % "2.0.1" % "test"
Run Code Online (Sandbox Code Playgroud)