0

並列スレッドでリモートの場所からファイルをダウンロードするプロセスがあります。各スレッドは、ダウンロードの開始時にメッセージを送信し、ダウンロードの完了時に 2 つ目のメッセージを送信します。両方のメッセージには、2 つを関連付けるためのダウンロード ID プロパティ (guid) があります。

次に、これらのダウンロードを監視するサガがあります。これは DownloadStarted イベントによって開始され、タイムアウトを使用して DownloadEnded イベントが時間内に受信されたかどうかを検出します。

私が抱えている問題は、大量のファイルが短時間 (1 分間で 1000 ファイル) にダウンロードされると、サガのパフォーマンスがそれほど大きくないことです。場合によっては、追いつくのに 30 分以上かかることもあります。

IFindSagas 実装を提供することで、サガ検索を高速化しようとしました。これは、RavenDB がサガ データの DownloadId に自動インデックスを作成する原因となったため、あまり役に立ちませんでしたが、そのインデックスが時間内に更新されなかったため、FindBy メソッドがしばしば null を返す原因にもなりました。

サガをスピードアップしようとする他の方法はありますか? DownloadId は既に一意の GUID であるため、サガ ID として使用することを考えていました。サガ データの Id プロパティは設定可能ですが、ドキュメントには ID を自分で設定しないように明記されています...

使用されるトランスポート: MSMQ 使用される持続性: RavenDB NServiceBus バージョン: 5

4

1 に答える 1