WebFluxでストリーム処理を扱う

今回は、Spring WebFlux を扱います。

Spring WebFlux とは、SprinbBootで、ノンブロッキングプログラミングをする機能を指します。

通常のSpringMVCはServletContainerをエンジンに作動しますが、WebFluxは非同期処理を得意とするNettyで起動します。

SpringMVCとSpringWebFluxには以下のような違いがあります。

SpringMVC SpringWebFlux
API宣言 @Controller,@RequestMapping RouterFunctions
リクエスト処理 Servlet API Http/ReactiveStreams
エンジン Servlet Container Tomcat,Netty,Jetty,Undertow
スレッド 1リクエスト毎に1つ生成 少ないスレッドで多くさばく

今回は、webFlux を用いてStream処理をするまでの

サンプルコードはこちらにあります。

1. WebFluxを使用するプロジェクトを作成する。

Spring Initializr  からプロジェクトを作成しましょう。依存に Reactive Web を追加します。

 

webfluxを起動するためのライブラリが依存関係に追加されています。

 

 

2.WebFluxでAPIを作成する。

では、実際にWebFluxでAPIを作成します。今回はサンプルコードに則って記述します。

 

WebFluxではAPIを定義するために、RouterFunction を定義します。

RouterFunction の記述方法は以下の通りです。

 

次に、無限ストリームでデータを送信してくるAPI部分を作成します。

 

さらにデータをpostする部分も含めて、このような実装になります。

 

3.WebFlux

では、実際にアプリケーションを使用します。今回はサンプルコードを例に進めていきます。

 

WebFluxAPIに対してリクエストを送ります。 stream形式でjsonを受け取るためのリクエストを送信します。

これで、アプリケーションからstream形式でjsonデータを受け取ることができました。

 

次に、データの変更を要求するリクエストを送信します。

stream形式で受け取るデータの値が変更されました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です