Kafka得到错误异常(BufferUnderflowException)

时间:2015-09-27 03:31:44

标签: node.js apache-kafka

人:

我想将Kafka与nodejs连接起来。版本Kafka 0.8.2 ,nodejs的模块 kafka (版本 0.2.3 )。

我的Kafka服务器位于我的virsualbox 192.168.1.104(默认设置,没有任何变化)

这是节点代码(在192.168.1.1中运行),它非常简单:

var kafka = require('kafka')
new kafka.Consumer().connect().subscribeTopic('test').on('message',     function(topic, message) {
 console.log("Consumed message:", message)
})

var producer = new kafka.Producer({
    host:         '192.168.1.104',
    port:         9092,
    topic:        'test',
    partition:    0
}).connect().on('connect', function() {
    producer.send("hey!")
    producer.close()
});

运行此代码后:在服务器端,他们发现错误异常:

2015-09-26 20:15:56,494] ERROR Closing socket for /192.168.1.102 because of  error (kafka.network.Processor)
java.nio.BufferUnderflowException
at java.nio.Buffer.nextGetIndex(Buffer.java:506)
at java.nio.HeapByteBuffer.getInt(HeapByteBuffer.java:361)
at kafka.api.FetchRequest$.readFrom(FetchRequest.scala:47)
at kafka.api.RequestKeys$$anonfun$2.apply(RequestKeys.scala:40)
at kafka.api.RequestKeys$$anonfun$2.apply(RequestKeys.scala:40)
at kafka.network.RequestChannel$Request.<init>(RequestChannel.scala:50)
at kafka.network.Processor.read(SocketServer.scala:450)
at kafka.network.Processor.run(SocketServer.scala:340)
at java.lang.Thread.run(Thread.java:745)

我不确定我是否应该做一些改变来处理它。或者我错过了什么。希望有人会帮助我,谢谢!

1 个答案:

答案 0 :(得分:2)

问题已解决!

错误配置导致的问题:Kafka服务器必须设置为:

在server.properties文件中:

  

advertised.host.name = 192.168.1.104

默认为localhost:因此客户端无法路由到目的地,您必须设置一个真正的ipaddress,以便远程客户端可以与服务器通信!