2017-06-06 16 views
0

私はblue-mixのmessage-hubのnode-js expressの例を見ています。私はなぜサーバーからメッセージハブをポーリングする必要があるのか​​疑問に思っています。私は、パブ・サブモデルの背後にある考え方全体が、私のサーバーがメッセージ・サービスをポーリングして消費する新しいメッセージがあるかどうかを調べる必要がないことだと考えました。提供された例では、app.jsファイルの行211〜213は、次の含まれていますなぜメッセージハブをポーリングする必要がありますか?

// Set up an interval which will poll Message Hub for 
    // new messages on the 'livechat' topic. 
    produceInterval = setInterval(function() { ...},250); 

私がしたいことは完全にポーリングモデルを回避し、するときにこれが今、私のサーバーのポーリングメッセージハブごとに250ミリ秒を持っています私が消費するメッセージが存在するときにメッセージハブによって通知されます。

答えて

2

簡潔に: カフカは、サーバープッシュではなく、消費者プルモデルを使用してスケーラビリティを実現します。

詳細: まずはカフカのドキュメントを読む価値があります。 具体的には、あなたの質問がここで回答されて http://kafka.apache.org/documentation/#design_pull

HTH、KafkaConsumerで 江戸

+0

偉大な答えと参考に感謝します。私はAPIの材料を使っていましたが、プッシュとプルのデザインセクションはまだ読んでいませんでした。 –

1

ポール()関数は、アプリケーションがクライアントバッファではなく、カフカブローカーへのネットワークを介して、必ずしもポーリングポーリングしていることを意味し。 Kafkaクライアントは、パフォーマンスを向上させ、レイテンシを短くし、ネットワークの効率を上げるために、このクライアント側のバッファにデータをプリフェッチしてキャッシュすることがよくあります。

データをアプリケーションに「プッシュ」する非同期コールバックスタイルのインターフェイスが必要な場合は、ポーリングインターフェイスをラップしてプッシュ型にするのは非常に簡単です。最終的には、すべてのプッシュAPIには、TCPソケット上のポーリングを呼び出す何かが隠蔽されています。

関連する問題