我想使用ruby kafka客户端库来生成事件,但遇到了一个我不确定如何解决的问题。任何帮助,将不胜感激。Ruby Kafka Producer BufferUnderflow
我尝试过使用kafka-rb(acrosa,mheffner和bpot分叉)。问题是不管我通过图书馆发送给我的东西,例如在服务器上
java.nio.BufferUnderflowException
at java.nio.HeapByteBuffer.get(HeapByteBuffer.java:127)
at java.nio.ByteBuffer.get(ByteBuffer.java:675)
at kafka.api.ApiUtils$.readShortString(ApiUtils.scala:22)
at kafka.api.ProducerRequest$.readFrom(ProducerRequest.scala:34)
at kafka.api.RequestKeys$$anonfun$1.apply(RequestKeys.scala:34)
at kafka.api.RequestKeys$$anonfun$1.apply(RequestKeys.scala:34)
at kafka.network.RequestChannel$Request.<init>(RequestChannel.scala:48)
at kafka.network.Processor.read(SocketServer.scala:321)
at kafka.network.Processor.run(SocketServer.scala:231)
at java.lang.Thread.run(Thread.java:680)
:
require 'kafka'
host = 'localhost'
port = 9092
producer = Kafka::Producer.new(
:topic => 'login',
:host => host,
:port => port
)
producer.send([Kafka::Message.new("aaaaa")])
,我收到了。在同一台服务器上,我可以通过提供的控制台生产者发送文本,而不会有任何问题
如果你之前看过这个,我会很感激的帮助。因为我对Scala不是很熟悉,所以我不确定问题是什么,但在我看来,引发此异常的行与从套接字读取clientId有关,而且对我来说也是如此没有这样的事情从红宝石客户端发送。
当我看到在tcpdump表单kafka-rb和提供的生产者生成的消息。红宝石似乎更短。 此外,无论我使用kafka-0.7还是0.8,我都会得到完全相同的行为。
事实证明,我是用我所有的尝试作为卡夫卡-RB 0.8不支持0.7格式,感谢您的帮助 – tarzan