簡體   English   中英

kafka Producer上的“ ClassCastException:kafka.message.Message無法轉換為java.lang.String”

[英]“ClassCastException: kafka.message.Message cannot be cast to java.lang.String” on kafka Producer

我正在嘗試編寫一些簡單的生產者以向kafka發送消息,我已經下載了kafka0.7

運行kafka服務器,生產者和使用者

>   bin/kafka-server-start.sh config/server.properties
>   bin/kafka-console-consumer.sh --zookeeper zooserver:2181 --topic test --from-beginning
>   bin/kafka-console-producer.sh --zookeeper zooserver:2181 --topic test

一切正常!

然后,我創建了簡單的Consumer,它也可以工作。

SimpleConsumer consumer = new SimpleConsumer("172.21.110.134", 9092, 10000, 1024000);
…
ByteBufferMessageSet messages = consumer.fetch(fetchRequest);
System.out.println("consumed: " + Utils.toString(msg.message().payload(), "UTF-8"));

但是以下生產者總是拋出錯誤

ProducerConfig config = new ProducerConfig(props);
…
Producer<String, Message> producer = new Producer<String, Message>(config);
producer.send(new ProducerData<String, Message>("test", new Message("Hello World".getBytes())));

得到以下異常

Exception in thread "main" java.lang.ClassCastException: kafka.message.Message cannot be cast to java.lang.String
            at kafka.serializer.StringEncoder.toMessage(Encoder.scala:30)
            at kafka.producer.ProducerPool$$anonfun$send$1$$anonfun$3$$anonfun$apply$1.apply(ProducerPool.scala:107)

我在Java代碼中使用的Maven依賴項

<dependency>
      <groupId>com.twitter</groupId>
         <artifactId>kafka_2.9.2</artifactId>
         <version>0.7.0</version>
     </dependency>

    <dependency>
         <groupId>org.scala-lang</groupId>
         <artifactId>scala-library</artifactId>
         <version>2.9.2</version>
     </dependency>

請幫忙,我做錯了什么? 為什么我不能通過簡單的Java代碼編寫?

問題是您配置了錯誤的序列化程序,這應該是

props.put("serializer.class", "kafka.serializer.DefaultEncoder");

不是“ StringEncoder”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM