我使用生产者API代码下面的代码将消息写入Kafka主题,但它无法将消息写入主题:
import java.util.Properties
import com.typesafe.config.ConfigFactory
import org.apache.kafka.clients.producer.{KafkaProducer, ProducerConfig, ProducerRecord}
import scala.io.Source
object KafkaProducerDemo {
def main(args: Array[String]): Unit = {
val props = new Properties()
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092")
props.put(ProducerConfig.CLIENT_ID_CONFIG, "KafkaProducerDemo")
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer")
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer")
val producer = new KafkaProducer[Nothing, String](props)
val logMessages = Source.
fromFile("/opt/gen_logs/logs/access.log").
getLines.
toList
logMessages.foreach(message => {
val record = new ProducerRecord("retail-multi", message)
producer.send(record)
})
}
}
根据您在评论中提到的错误(java.lang.ArrayIndexOutOfBoundsException:18),我会说您的客户端库版本和代理版本之间存在不匹配。客户端lib应该是<broker(除非客户端lib支持动态API版本检查)。
因此,仔细检查您要连接的代理版本,然后仔细检查您的客户端库版本。一旦匹配或兼容,你应该好好去!
嗨,我可能是因为一些卡夫卡版本不匹配。我已经重新安装kafka和sbt。它现在开始运作良好。