1

私は、非ブロッキングI/O(Spring Boot 2.0.0.M7)にSpring Webflux、Spring Data、およびProject Reactorを使用しています。将来のイベントのために有限ソース上のリアクティブストリームが残っています

私の目標は、クライアントがいくつかの基準に基づいてエンドポイントからすべてのリソースを要求できるように株式ティッカーのようなAPIを作成し、最初のリクエスト後に作成される新しいリソースを受け取ることです。 Reactive MongoDBはバッキングストアです。基本的なHandlerFunctionの実装は以下のようになります。明らかに

Mono<ServerResponse> getFoos(ServerRequest request) { 
    ok().contentType(TEXT_EVENT_STREAM) 
      .body(fooRepository.findAll(), Foo) 
} 

、これはちょうどそのPublisherは接続を閉じ、新しいFoosがクライアントに送信されません、現在入手可能なすべてのFoosを返します。私の質問は、これに新しいエントリを受け入れることができる無限のストリームを追加するためにどのようなパターンを使用するのですか?私は新しいFoos彼らは

  • 使用repeatを(重複したエントリをフィルタリングするために、いくつかの基準に)Repositoryにresubscribes onCompleteを追加し、クライアントを聞かせて作成されるように書き込みをいくつかのグローバルPublisher Bean

    1. 、連結方式重複をフィルタリングする
    2. 他に何か?
  • 答えて

    1

    あなたのMongoDBのコレクションは、(それがキャップをする必要がある)に応じて設定した場合、あなたは自分のリポジトリに@Tailable注釈を追加し、あなたが望むものを達成するためにtailableカーソルを使用することができます。 Spring Data MongoDB reference documentation about infinite streamsを参照してください。

    +0

    これについてのちょっとした質問です。つまり、これが機能するには別のコレクション(Capped)を作成する必要がありますか? – pvpkiran

    +0

    コレクションには実際にキャップが必要です。これがMongoDBでこの機能を利用するための条件です。 –

    +0

    ありがとうございます。 MongoDBも新しく、Mongo固有のセクションを読まなかった。 – JudgingNotJudging

    関連する問題