2017-12-15 2 views
-1

私が作成したマイクロサービスプロセッサのキューメカニズムを追加しようとしています。つまり、プロセッサは他のサーバーからIDを取得します(REST呼び出しによる) DBから情報を追加し、豊富なIDデータを持つ新しいオブジェクトを作成します。 キューマネージャは、IDの配列を管理し、Node.js - 配列の長さと時間によるキューの管理

xミリ秒またはIDの量の後にデータを豊かにする必要があります。 (濃縮はバルクとして行われます)

どうすればいいですか?キューを管理する方法は?

素晴らしいですが、私は時間問題だけを解決する機能があることは知っていますが、配列長で豊富化をするにはどうすればいいですか?

+0

広く使用されている非同期ライブラリには、キューコントロールフローオブジェクトがあります。http://caolan.github.io/async/docs.html#queue - 独自のキューを作成する代わりに、そこから始めたいと思うかもしれません。 – Graham

答えて

0

あなたのキューが一定の長さに当たったとき時に長さが変化し、私は監視のための3つの戦略を考えることができます表示するには:

  1. トリガーキューが追加されonChange通知。キューにアイテムを追加するコードでは、必ず特定の関数を使用してコードを実行するので、キューを変更するランダムなコードがたくさんあるわけではありません。次に、その1つの関数で、アイテムがキューに追加された直後に、作成したEventEmmitterでonChangeイベントをトリガーします。その後、キュー・マネージャーはonChangeイベントのリスナーを追加し、変更されるたびにキューを検査できます。

  2. キュー配列のオーバーライド.push()アイテムが.push()のキュー配列にのみ追加されることがわかっていると仮定すると、デフォルトのプッシュを呼び出す独自のメソッドを使用してキュー配列の.push()メソッドをオーバーライドし、配列の長さを調べてさらに何かをする必要があります。

  3. ES6プロキシを使用して、アレイの長さをアクティブに監視し、いつでも変更を参照してください。ここでそれを行う方法の例があります:あなたはすでにあなたがそのようなsetInterval()setTimeout()としてタイマーを使用することができます知っているように、時間についてはhttps://github.com/gergob/jsProxy/blob/master/04-onchange-object.jsDetecting changes in a Javascript array using the Proxy object


は、それが聞こえます。どのようにしてそれらの使用法をより具体的に提案するために、時間要素がどのように機能したかったのかは明らかではありませんでした。 sipmlestの実装ではおそらく、xxxxごとにsetInterval()というキューをポーリングし、現在キューにあるすべてのアイテムを処理するだけです。待ち行列が空から空でなくなった時点を監視し、その時点からsetTimeout()を開始するよりスマートなアルゴリズムがあります。

関連する問題