問題タブ [changestream]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 同時に挿入されたドキュメントのmongodb変更ストリームで同じ再開トークンを取得する
変更ストリームAPIの助けを借りて MongoDB(3.6) の API を使用する Azure Cosmos DB のコレクションの変更 (insert
および)をリッスンする nodejs 関数があります。変更ストリームから受信した各ドキュメントには、一意のトークンがあります (ドキュメントに記載されています)。こちらもご確認くださいupdate
しかし問題は、cosmos db に 100 または 200 というドキュメントを同時に挿入すると、ストリームから受信した挿入されたドキュメントは同じ再開トークンを持つことです。これは、変更ストリームの再開戦略に悪影響を及ぼします
ただし、この奇妙な動作はスタンドアロンの mongodb にはありません。テストしたところ、mongo api を使用した cosmosdb でのみ発生していることがわかりました。誰かが同じ問題を抱えていますか?回避策はありますか?
node.js - mongo から Elasticsearch にデータをストリーミングする nodeJS ワーカーを実装するにはどうすればよいですか?
私は、Mongo Change Streamsを使用して変更イベントをリッスンし、elasticsearch の変更をほぼリアルタイムでインデックス化するCDCベースのアプリケーションを構築しています。
これまでのところ、関数を呼び出してイベントをキャプチャし、それらを変換し、1 つの mongo コレクションのストリームを実装するときに問題なく Elasticsearch にインデックスを付けるワーカーを実装しました。
無限ループを使用して実装しました (おそらく悪いアプローチです) が、変更ストリームを永久に存続させなければならない場合に、どのような代替手段があるかわかりません。
別のモデルの変更ストリームを実装する必要があるときに問題が発生します。最初の関数にはブロックしている while ループがあるため、ワーカーは 2 番目の関数を呼び出して 2 番目の変更ストリームを開始できません。
x no をトリガーできるワーカーをスピンアップする最善の方法は何だろうと思っています。各変更ストリームのパフォーマンスに影響を与えることなく、変更ストリームの ワーカースレッドは正しい方法でしょうか?