Jul*_*ias 1 scala bigdata apache-kafka
我正在尝试编写一些简单的生成器,将消息写入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
Run Code Online (Sandbox Code Playgroud)
一切正常!
然后我创建了简单的消费者,它也有用.
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"));
Run Code Online (Sandbox Code Playgroud)
但是下面的生产者总是会抛出一个错误
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())));
Run Code Online (Sandbox Code Playgroud)
获得以下异常
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)
Run Code Online (Sandbox Code Playgroud)
我在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>
Run Code Online (Sandbox Code Playgroud)
请帮忙,我做错了什么?为什么我不能通过简单的java代码编写?
问题是你配置了错误的序列化程序,这应该是
props.put("serializer.class", "kafka.serializer.DefaultEncoder");
Run Code Online (Sandbox Code Playgroud)
不是"StringEncoder"
| 归档时间: |
|
| 查看次数: |
6762 次 |
| 最近记录: |