K vaší chybě dochází, protože stream zpracováváte příliš pomalu, takže než se dostanete k další dávce, vyprší časový limit kurzoru.
Velikost dávky lze nastavit na Objekt Spring Data Query , nebo v úložišti pomocí @Meta anotace. Například:
Query query = query(where("firstname").is("luke"))
.batchSize(100);
Nebo při používání úložišť:
@Meta(batchSize = 100)
List<Person> findByFirstname(String firstname);
Viz Spring Data MongoDB dokumentace pro více podrobností.
Časový limit kurzoru lze také zakázat na základě dotazu pomocí stejné konfigurace. např. @Meta(flags = {CursorOption.NO_TIMEOUT})
.
Časový limit kurzoru nelze změnit na základě dotazu. To je konfigurace serveru. Musíte použít kurzorTimeoutMillis parametr serveru pro změnu tohoto parametru na celém serveru.