3

イベントの生成に ruby​​ kafka クライアント ライブラリを使用したかったのですが、解決方法がわからない問題に直面しました。どんな助けでも大歓迎です。

kafka-rb (acrosa、mheffner、および bpot フォーク) を使用してみました。問題は、ライブラリ経由で何を送信しても、たとえば

require 'kafka'
host = 'localhost'
port = 9092
producer = Kafka::Producer.new(

        :topic => 'login',
        :host => host,
        :port => port
)
producer.send([Kafka::Message.new("aaaaa")])

私は得る:

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)

サーバー上。同じサーバーで、提供されたコンソール プロデューサーを介して問題なくテキストを送信できます。

以前にこれを見たことがあれば、助けていただければ幸いです。私は Scala にあまり詳しくないので、何が問題なのかわかりませんが、この例外がスローされる行は、ソケットからの clientId の読み取りに関係しているように思えます。 ruby クライアントから送られてくるようなものはありません。

tcpdumpフォームkafka-rbと提供されたプロデューサーで生成されたメッセージを見ると。ルビーの方が短く見えます。さらに、kafka-0.7 と 0.8 のどちらを使用しても問題ありません。まったく同じ動作が得られます。

4

1 に答える 1