如何在Scala中实现Kafka Consumer

时间:2016-08-04 02:35:43

标签: scala apache-kafka

我试图在scala中实现kafka使用者。我已经看过一百万个关于如何用Java做的教程,甚至还有一些(like this one)说它是scala,但它是用Java编写的。

有谁知道我在哪里可以找到如何在Scala中编写它的示例?我刚刚开始学习Scala所以也许链接的例子可以在Scala中使用,即使它是用Java或其他东西编写的,但我老实说我不知道​​我现在在做什么。我google的所有内容都只是将我与如何用Java联系起来。

2 个答案:

答案 0 :(得分:8)

您在Java中看到大多数示例的原因是新的KafkaProducer从0.8.2.2开始是用Java编写的。

假设您使用sbt作为构建系统,并假设您使用Kafka 0.8.2.2(您可以根据需要更改版本),则需要:

libraryDependencies ++= {
  Seq(
    "org.apache.kafka" %% "kafka" % "0.8.2.2",
    "org.apache.kafka" % "kafka-clients" % "0.8.2.2",
  )
}

一个简单的例子应该让你开始:

import scala.collection.JavaConverters._
import org.apache.kafka.clients.consumer.KafkaConsumer
import org.apache.kafka.common.serialization.StringDeserializer 

object KafkaExample {
  def main(args: Array[String]): Unit = {
    val properties = new Properties()
    properties.put("bootstrap.servers", "localhost:9092")
    properties.put("group.id", "consumer-tutorial")
    properties.put("key.deserializer", classOf[StringDeserializer])
    properties.put("value.deserializer", classOf[StringDeserializer])

    val kafkaConsumer = new KafkaConsumer[String, String](properties)
    kafkaConsumer.subscribe("firstTopic", "secondTopic")

    while (true) {
      val results = kafkaConsumer.poll(2000).asScala
      for ((topic, data) <- results) {
        // Do stuff
      }
    }
}

答案 1 :(得分:1)

您还可以在此处查看完全基于Scala构建的工作模板:https://github.com/knoldus/activator-kafka-scala-producer-consumer 此应用程序包含您要在此处使用的代码。

我希望我解决了你的问题,谢谢!