2017-12-15 35 views
1

私はwebflux starterSpring boot 2.0.0.M7プロジェクトを作成しました。 私はserver.servlet.context-pathを追加しましたが、Webスターターも追加しないと機能しません。WebFluxウェブとwebfluxスターター

両方のスターターを追加すると、ノンブロッキング機能に問題はありますか? 私はGatlingでいくつかのストレステストを実行しましたが、Webスターターを外したり追加したりするのと同じスコアを受けました。

これに関する助力?

答えて

0

spring-boot-starter-webspring-boot-starter-webfluxの両方をアプリケーションに追加すると、SpringBlockはアプリケーションをSpring MVCアプリケーションとして構成します。

多くのSpring MVCのは、彼らのMVCのアプリで新しいWebClientを活用するwebfluxの依存関係を取得しますので、これは意図的なものです。また、Spring Framework 5の時点で、Spring MVCはコントローラレベルでFluxでいくつかのケースを処理する方法を知っています。

あなたは、常にこのようなあなたの選択を強制することができます。

SpringApplication app = new SpringApplication(MyApplication.class); 
app.setWebApplicationType(WebApplicationType.REACTIVE); 
app.run(...); 

をお使いの場合には、これは選択を強制するのではなくWebFluxではサポートされていないものを使用した話ではありません。

server.servlet.context-path構成プロパティは、サーブレット固有のものであるため、それはWebFluxでは動作しません。現在のところ、Springブートは、WebデプロイメントやWebFluxアプリケーション用の複数のWebコンテキストをサポートしていません。そのような不動産を提供することには意味がありません。

「サーブレットベース」と「リアクティブランタイム」との間のランタイムモデルの違いは非常に微妙です。talk that describes those choicesを見ることをお勧めします。短い答えは:非同期型(DeferredResultFluxまたはSseEmitter)のSpring MVCを使用している場合、非同期になりますが、読み書きはブロックされます。適切にそれをベンチマーク

は非常に難しいですが、あなたが見ている結果が何とか期待されています。ローカルのサーバ+クライアントを実行し、レイテンシは発生せず、生のスループットを見てください。これらの制約はすべて並行処理コストを伴うリアクティブモデルに優先すべきではありません。何があっても、このベンチマークは、非理想的な使用例であっても、反応性スタックが既に最適化されていることを示しています。

+0

ブライアンに感謝してくれました。 –

関連する問題