問題タブ [spring-webflux]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring - Flux を拡張/Publisher を実装し、s.onNext() を複数回呼び出すと、Spring 5 Reactive が失敗する
Spring 5 の新しいリアクティブ サポートを使い始めたばかりで、非同期データ生成をシミュレートしたいと考えていたところ、2 つの問題のある動作に気付きました。
1) s.onNext( String ) を複数回呼び出す:
この場合、スタックトレースは次のとおりです。
2) s.onNext( Alert.class -any DTO- ) を複数回呼び出す:
ログにエラーは表示されなくなりましたが、発信者は 500 応答コードとコンテンツ '[' を受け取ります。
ログ:
onNext() を複数回呼び出せないのはなぜですか? どうすればそれができますか?
注:私はonNext
一度呼び出すだけで問題なく動作します:
また
spring - Spring 5 M2 - リアクティブ - ServerSentEvent のシリアル化中にエラーが発生しました
Spring 5.0.0 M1 から M2 にアップグレードした後、このコードは機能しなくなりました (クラスSseEvent
からServerSentEvent
クラスに変更しました)。
例外は次のとおりです。
spring - Spring 5 Web Reactive - Hot Publishing - EmitterProcessor を使用して MessageListener をイベント ストリームにブリッジする方法
サンプル プロジェクトは次の場所にあります: https://github.com/codependent/spring5-playground
JMS キューから受信したメッセージを、メッセージをイベント ストリームとして発行するリアクティブ コントローラーにブリッジしたいと考えています。
つまり、メッセージが到着し、サブスクライバーがいない場合、後でサブスクライバーが送信されたくないので、EmitterProcessor を使用しています。
これは私のMessageListener です:
最後に、Rest Controller:
その動作をテストするために、このコントローラー メソッドを追加して、キューへの挿入をシミュレートしました。
ロードしたアプリケーションを起動した直後http://localhost:8080/accounts/1/alerts/live2
、ブラウザはデータを待ちます。
次に、いくつかのメッセージを公開しますhttp://localhost:8080/mock/accounts/1/alerts/put
。
しかし、どれもブラウザに到達しません。これは最終的に 500 エラー (ログなし) で終了します。
手動で再試行した後、データの受信を開始します...
...しかし、他の多くの場合、何も得られません。
java - Spring http/web forward が spring-reactive で機能しない
あるコントローラーから別のコントローラーにリクエストを転送しようとしていますが、代わりに例外が発生します
java.lang.IllegalStateException: 'forward:/test2' という名前のビューを解決できませんでした。org.springframework.web.reactive.result.view.ViewResolutionResultHandler.lambda$resolveViews$5(ViewResolutionResultHandler.java:272) で ~[spring-web-reactive-5.0.0.BUILD-SNAPSHOT.jar:5.0.0.BUILD-スナップショット]
ここに私のコントローラがあります:
スプリングブートを使用しています
java - spring-boot-starter-web-reactive + spring-boot-starter-actuator は連携しませんか?
spring-boot-starter-actuator を試してみました。デフォルトの指示では、pom の spring boot プロジェクトに追加しましたが、問題なく動作しました。
spring-boot-starter-web-reactive を追加するとすぐにすべてが機能しなくなり、新しく作成されたリアクティブ エンドポイントは機能しますが、アクチュエーターは機能しなくなりました。また、以前に作業していた h2 /console も壊れていることに気付きました。
エラーも例外もありません。これらは機能しなくなります。
spring - HTTP エンドポイントが DTO の代わりに Flux/Mono インスタンスを返す利点
Spring Tips: Functional Reactive Endpoints with Spring Framework 5.0を見て、Springリアクターについて少し読んだことがありますが、よくわかりません。
Netty とスプリング リアクターがアクティブになっている場合、エンドポイントが直接の dto オブジェクト (jacksonified) ではなく、Flux
/インスタンス (jacksonified) を返すことの利点は何ですか? Mono
私は当初、リアクティブ ストリームは、http 要求/応答のコンテキストでは、サーバーがオープン チャネルを使用して受信者にデータをプッシュする websocket のように機能すると想定していましたが、そうではないようです。
また、実際にリアクティブ プログラミングで tomcat より netty が優れている点は何ですか?
これらの質問がばかげているように思われる場合は申し訳ありませんが、この新しいフレームワークの方向性の目的がよくわかりません。なぜそれが生まれ、どのように機能し、どのような問題を解決するのでしょうか?
spring - Spring 5 Web Reactive - WebClient を使用して Flux でストリーミングされたデータを取得するにはどうすればよいですか?
Mono
現在のマイルストーン (M4) のドキュメントには、 usingを取得する方法の例が示されていますWebClient
。
text/event-stream
WebClient を使用して(を返すサービスから) ストリーミングされたデータを Flux に取得するにはどうすればよいですか? 自動ジャクソン変換をサポートしていますか?
これは以前のマイルストーンで行った方法ですが、API が変更されており、それを行う方法が見つかりません。
java - Spring 5 を使用した実際のコントローラーの例: Web Reactive
Spring を使ってリアクティブ プログラミングの世界に関わりたいと思っています。私が気づいたように、それは2つの異なるパラダイムの間の選択を与えてくれます: アノテーションベース(私たち@Controller
によく知られている@RequestMapping
)と反応的なもの( 「アノテーション地獄」を解決することを目的としています)。
私の問題は、典型的なリアクティブコントローラーがどのように見えるかを理解していないことです。コントローラー クラスで使用できる 3 つの概念的なインターフェイスがあります。
HandlerFunction<T>
ServerRequest
(1) -具体的なインスタンスを返す特定ごとにメソッドを定義し、HandlerFunction<T>
これらのメソッドをルーターに登録します。右?
RouterFunction
(2) および(3) -対応するFilterFunction
すべての を配置する特定の場所はありますか? または、各コントローラーで個別に行うことはできますか (以前は注釈アプローチで行っていたように)? もしそうなら、このコントローラーからこのルーター部分を適用するようにグローバルハンドラー (もしあればルーター?) に通知するにはどうすればよいですか?RequestPredicate
HandlerFunction
これが、リアクティブコントローラーの「テンプレート」の見方です。
そして最後に、注釈を付けずにコントローラーであると言うにはどうすればよいでしょうか?
Spring リファレンスと、公式ブログでこの問題に関連するすべての投稿を読みました。たくさんのサンプルがありますが、それらはすべて文脈から引き出されており (IMHO)、全体像を組み立てることはできません。
これらの機能間の相互作用を整理する方法について、実際の例と優れた実践例を提供していただければ幸いです。