Ich verwende Spring Webflux, Spring Data und Project Reactor für nicht blockierende E/A (Spring Boot 2.0.0.M7).Reactive Stream auf finite Quelle bleibt offen für zukünftige Ereignisse
Mein Ziel ist es, eine Stock-Ticker-ähnliche API zu erstellen, die es einem Client erlaubt, alle Ressourcen von einem Endpunkt basierend auf bestimmten Kriterien anzufordern und neue Ressourcen zu erhalten, die nach der ersten Anfrage erstellt werden. Reactive MongoDB ist der Backing Store. Die grundlegende HandlerFunction
Implementierung sieht wie folgt aus.
Mono<ServerResponse> getFoos(ServerRequest request) {
ok().contentType(TEXT_EVENT_STREAM)
.body(fooRepository.findAll(), Foo)
}
Offensichtlich ist dies kehrt nur alle Foos
, die derzeit verfügbar sind, dann wird der Publisher
schließt die Verbindung und keine neuen Foos
werden an den Client gesendet. Meine Frage ist, welches Muster verwendet werden soll, um diesem einen unendlichen Stream hinzuzufügen, der neue Einträge akzeptieren kann.
- Concat mit einigen globalen
Publisher Bean
, die ich neueFoos
zu schreiben, wie sie erstellt werden - eine
onComplete
hinzufügen, die zurRepository
resubscribes (mit einigen Kriterien doppelte Einträge filtern) - Verwenden
repeat
und den Client lassen filtere die Duplikate - Etwas anderes?
Nur eine Follow-up-Frage zu diesem Thema. Bedeutet das, dass wir eine separate Sammlung (Capped) erstellen müssen, damit dies funktioniert? – pvpkiran
Die Sammlung muss in der Tat begrenzt werden. Das ist die Bedingung, um diese Funktion mit MongoDB zu haben. –
Danke. Neu auch in MongoDB, und ich habe den Mongo-spezifischen Teil der Dokumentation nicht gelesen. – JudgingNotJudging