2017-06-07 15 views
0

この質問は、why do I need to poll message hubに関連しています。その回答にリンクされているドキュメントには、カフカは「長い投票」の概念をサポートしていますが、そのようなメカニズムを実装するためのメッセージハブのための既存のノードjのサポートnodejsに提供されるデモアプリケーションは、サーバからのメッセージの取得を処理するために250mSecタイマーインターバルを使用するだけです。私はそれをKafkaのlong-pollのアプローチを使ってより洗練されたロングポールアプローチに置き換えたいと思います: To avoid this we have parameters in our pull request that allow the consumer request to block in a "long poll" waiting until data arrives しかし、既存の実装ではこのような種類のパラメータを設定することはできませんし、必要なパラメータは次のようになります。 get関数のプロトタイプは次のように定義されています。NodeJSでBluemixメッセージハブを使用して「長い投票」を設定するには

MessageHub.ConsumerInstance.prototype.get(topicName [toValue]) 

Retrieves a message from the provided topic name. 

    topicName - (String) (required), the topic to retrieve messages from. 
    toValue - (Boolean) (optional), unwraps base64 encoded messages, if true. Defaults to true. 

Returns a Promise object which will be fulfilled when the request to the service resolves. 

設定オプションはありません。または、message-hub.jsモジュールに実装されているURLのURLと利用可能なオプションを定義するドキュメントをリンクしてください。あなたが言及しているものは、メッセージのハブが提供するRESTのAPIの上に構築されたNPMモジュールであることを

答えて

1

- NPMが提供されていないことを基本的にコンフルエントRESTプロキシAPIマイナスAVROサポート http://docs.confluent.io/2.0.1/kafka-rest/docs/api.html

ある あなたは完全なカフカのAPIです。それは、RESTのAPI

カフカドキュメントが参照するJavaの消費者調査でタイムアウトであるロングポーリングのサブセットだけを提供しています https://kafka.apache.org/0102/javadoc/org/apache/kafka/clients/consumer/KafkaConsumer.html#poll(long)

Node.jsのための良いクライアントが https://github.com/Blizzard/node-rdkafka

です

サンプルコード https://github.com/ibm-messaging/message-hub-samples

+0

ありがとうございました。最初のURLは、私がnodeJSでこの作業を行う方法を理解するのに不可欠なものです。私がこの例(第3のURL)で見ているのは、タイムアウトが発生するかメッセージが提供されるまで待つのではなく、消費されるべきメッセージがない場合、nodeJSがただちに戻るということです。 Consumer/Getのクエリパラメータはmaxbytesを許可しますが、configオプションはmax.timeout.msがデフォルトで1000msになることを意味します。これは発生しません - 検索するメッセージがない場合、空の結果で残りは即座に戻ります。 –

関連する問題