我是apache camel和apache kafka的新手,为我的项目做了一个小POC。我在尝试使用Camel-kafka组件从kafka读取时遇到问题错误日志。
[2016-01-20 08:47:10,979] INFO Closing socket connection to /127.0.0.1. (kafka.network.Processor)
[2016-01-20 08:47:44,643] INFO Closing socket connection to /127.0.0.1. (kafka.network.Processor)
[2016-01-20 08:47:54,545] ERROR Closing socket for /127.0.0.1 because of error (kafka.network.Processor)
java.io.IOException: Broken pipe
at sun.nio.ch.FileDispatcherImpl.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
at sun.nio.ch.IOUtil.write(IOUtil.java:65)
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:470)
at kafka.api.TopicDataSend.writeTo(FetchResponse.scala:123)
at kafka.network.MultiSend.writeTo(Transmission.scala:101)
at kafka.api.FetchResponseSend.writeTo(FetchResponse.scala:231)
at kafka.network.Processor.write(SocketServer.scala:472)
at kafka.network.Processor.run(SocketServer.scala:342)
at java.lang.Thread.run(Thread.java:745)
我的java代码如下:
public class Main {
public static void main(String[] args) throws Exception {
CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {
public void configure() {
from("kafka:127.0.0.1:9092?topic=TEST&zookeeperHost=localhost&zookeeperPort=2181&groupId=group1")
/*.marshal(xmlJsonFormat)*/
.process(new XmlToJson())
/*.to("kafka:localhost:9092?topic=TestJson&zookeeperHost=localhost&zookeeperPort=2181&groupId=group1");*/
.to("file:/Users/himanshu/Desktop/TransCamelFuse/test.txt");
}
});
context.start();
Thread.sleep(10000);
context.stop();
}
}
我已经从kafka制作人控制台工具中添加了一些txt并尝试使用kafka的camel组件进行读取。
答案 0 :(得分:0)
这不是错误。由于您提供数据类型而导致此错误。您将逐个手动向Kafka提供数据。
答案 1 :(得分:0)
您需要确保kafka服务器和kafka客户端版本相互兼容,我面临的问题是我的kafka服务器为0.8,某些spring bean使用kafka 2.4库,因此,只要2.4客户端请求任何kafka 0.8操作server.log记录此错误
解决方案 确保在代码中没有任何bean使用不兼容的客户端进行通信。