2016-06-14 7 views
0

私のnode.jsサーバーにはkafka-nodeを使用しています - kafkaトピックに接続するためです。 APIには、コールバック関数があります。kafka-node - 非同期関数に引数を渡します。consumer.on();

consumer.on('message', function (message) { 
    console.log(message); 
}); 

到着時にメッセージを消費します。

私はこのコールバック関数に引数を追加できますか?私はメッセージが到着したときにそれを呼び出す関数ではないからです。

具体的には、私が期待されるIDを送信し、消費メッセージIDとそれを比較したい:

consumer.on('message', function (message, id) { 
    if (id == message.id) 
     console.log(message); 
}); 

EDIT: これは、より大きなコードのスニペットです。 フルフロー:

  1. ユーザーはnode.jsサーバーからhttp要求を要求します。
  2. GET HTTPリクエストがnode.jsサーバーでトリガーされています。
  3. kafkaプロデューサは、(一意のIDを持つ)いくつかのメッセージを外部システムに送信し、応答を待ちます。
  4. カフカ消費者に返信されます。受信したメッセージIDは、期待されるIDと比較されます(等しい場合) - http応答としてメッセージを返します。

複数のhttp get要求を並行して受信できるとします。

+0

イベントは、idという2番目のパラメータを渡しますが、 'id == message.id'は常に' true'になります。それで、あなたはここで何を期待していますか? – Oxi

+0

@Oxiもっと正確に投稿を編集しました。 – ItayB

答えて

1

コールバックに引数を追加することはできません。しかし、閉鎖の範囲内にある変数を参照するだけで、それなしでやろうとしていることを達成できると信じています。例えば

、あなたが持っている場合:

var id = 1001; 

consumer.on('message', function(message) { 
    if (id == message.id) console.log(message); 
}); 

を私は、これはあなたがやりたいと考えています。

+0

別のアプローチがあるのだろうかと思うけど、そうは思わない。私はそれを試して更新します.. – ItayB

関連する問題