У меня есть процесс, который загружает файлы из удаленного места в параллельных потоках. Каждый поток отправляет сообщение при запуске загрузки, а второй - при завершении загрузки. Оба сообщения имеют свойство id загрузки (guid) для корреляции этих двух.Оптимизация поиска саги
Далее У меня есть сага, которая отслеживает эти загрузки. Он запускается с помощью события DownloadStarted и использует таймаут, чтобы определить, получено ли событие DownloadEnded вовремя.
Проблема, которую я испытываю, заключается в том, что производительность саги не так уж велика, когда большое количество файлов загружается за короткое время (1000 файлов за 1 минуту). В определенные моменты для этого требуется больше получаса.
Я попытался ускорить поиск саги, предоставив имплантацию IFindSagas. Это не помогло, поскольку это заставило RavenDB создать автоматический индекс в DownloadId в данных саги, но также заставил метод FindBy часто возвращать значение null, потому что этот индекс не обновлялся вовремя.
Есть ли другой способ, которым я мог бы попытаться ускорить сагу? Я думал об использовании DownloadId как saga id, так как это уже уникальный guid. Свойство Id данных саг является настраиваемой, но в документации конкретно говорится, что вы не должны установить идентификатор себя ...
Транспорт используется: MSMQ Постоянство используется: RavenDB NServiceBus версия: 5