人:
我想将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)
我不确定我是否应该做一些改变来处理它。或者我错过了什么。希望有人会帮助我,谢谢!
答案 0 :(得分:2)
问题已解决!
错误配置导致的问题:Kafka服务器必须设置为:
在server.properties文件中:
advertised.host.name = 192.168.1.104
默认为localhost:因此客户端无法路由到目的地,您必须设置一个真正的ipaddress,以便远程客户端可以与服务器通信!