問題タブ [rsocket]
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 - 外部ブロッキング API 呼び出しを持つリアクティブ マイクロサービスを設計する方法は?
WebFlux フレームワーク上で動作するマイクロサービスがいくつかあります。各サーバーには、Mono または Flux を使用した独自の API があります。Spring でサポートされている MongoDB を使用しています (Spring Data MongoDb Reactive)。
問題は、システムで使用する必要がある外部ブロッキング API です。
私には1つの解決策があります。ブロッキング API 呼び出しを専用のスレッド プールにラップし、それを CompletableFuture で使用できます。
私の問題を解決するために他に何かありますか?新品の Rsocket では問題を解決できないと思います。
security - rsocket を安全に使用するためのベスト プラクティスは何ですか?
rsocket を安全に使用するためのベスト プラクティスは何ですか (認証、承認)。これは rsocket が意見を述べているものですか、それとも他の人が rsocket の上に構築するために行った作業ですか?
java - RSocket は生成されたデータでは機能しますが、Spring Reactive MongoDB では機能しません
解決策の概要:
現在出回っているほとんどの RSocket の例では、SpringBoot 関連のチュートリアルであっても、サーバー側のアクセプターは単純に新しいオブジェクト (以下の new MqttMessageService() など) として構築されています。アクセプター クラスでサンプル コンテンツを生成する場合は問題ありませんが、アクセプターがコンテナー内の他の Bean に依存している場合、以下の依存性注入に関連する混乱が生じる可能性があります。
元の質問:
Rsocket の Java サーバー経由で Spring Data Reactive Mongodb リポジトリを使用してデータベース エントリをストリーミングしようとすると、NullPointerException が発生します。
問題は、デバッグ中にすべてのコンポーネントが個別に動作することです。同じ Mongodb リポジトリを介して要求されたデータを取得でき、Rsocket を使用して同じサーバーとクライアント間でランダムに生成されたデータをストリーミングすることもできます。
したがって、本当に基本的なものが欠けているか、Reactive Mongodb と Rsocket を一緒に使用すると問題が発生する可能性があります。
元のサーバー側の Rsocket 構成は次のとおりです。
そして、これが適切なDIを備えたサーバー側のRsocket構成です。
これは、return service.findAll() で NullPointerException がスローされるサーバー側の AbstractRSocket 実装です。
リアクティブ リポジトリと関連サービスは次のとおりです。サービスは、サーバーの AbstractRSocket 実装に注入されると null を返しますが、他のクラスに注入されると正常に動作します。
テストの内容と完全に連携するクライアント側のコードは次のとおりです。
私はここで私の知識レベルを少し超えている可能性があり、このトピックに関するリソースは非常に限られているため、解決策へのヒントをいただければ幸いです:)
java - Spring Boot で RSocket のすべての対話モデルをマップする方法
RSocket には 4 つの対話モデルが用意されています。
- 火をつけて忘れる
- リクエストとレスポンス
- リクエストストリーム
- リクエストチャンネル
- (メタデータのプッシュ)
Spring (および Spring Boot) は RSocket 統合を提供します。元の RSocket API を隠すために、既存のメッセージング インフラストラクチャを使用して RSocket サーバーを簡単に構築できます。
また、クライアント側にはRescoketRequester
、サーバーと握手をするための が用意されています。
でも使い方はrequestChannelと Spring 方式のmetadataPushモデル (メッセージング インフラストラクチャを使用)?
サンプルコードはGithubにあります。更新: requestChannelサンプルを追加しました。
更新: SETUPとMETADATA_PUSHは で処理できます@ConnectMapping
。また、Spring Security RSocket はSETUPとREQUESTを保護できます。