1を接続します。
衰退チュートリアルシリーズに対応してSpringCloud戦闘サービス(第一章)
チュートリアルの衰退シリーズ(第II章)に対応してSpringCloud戦闘サービス
衰退チュートリアルシリーズに対応してSpringCloud戦闘サービス(第III章)
1.1.4原子炉のフレームワークが導入します
あなたは原子炉のフレームワークのコードを統合する場合は、それぞれ、次のMavenの依存を追加する必要があり、および関連ツールは、テストをサポートするために原子炉のコア機能に導入します。
<依存性> <グループID> io.projectreactor </グループID> <cartifactid>反応器コア/成果物> </依存> <依存性> <グループID> io.projectreactor </グループID> <cartifactid>反応器テスト/成果物> <スコープ>テスト</スコープ> </依存>
原子炉のフレームは、応答フロー仕様の実現におけるその具体的な設計になっています。このセクションでは、最初のシーケンス炉非同期データフレームを説明し、その後、フラックスモノラル2つのコア・コンポーネントを導入します。
1.原子炉非同期データ系列
炉応答アプリケーションを開発する際に、関係なく、オペレータの使用の非同期データを図に示したシーケンスを受信します。
onNext X 0..N [のonError | onCompleteの]
方法の3つの異なるタイプを含む上記式を呼び出し、通知メッセージは、異なるシナリオの下で処理されます。
-
onNext():正常な通知メッセージを含む素子。
-
onCompleted():配列通知メッセージの終わり、できません。
-
onError():配列通知メッセージエラーがないがあってもよいです。
通知メッセージが生成された応答フロー仕様、これらの3つの方法に従って、非同期配列加入者が呼び出され、対応します。順序が間違っていない場合は、ONERROR()メソッドが呼び出されることはありません。あなたはonCompleteの()メソッドを呼び出していない場合は、非同期の無限列を取得します。典型的には、非同期の無限配列は、テストおよび他の特別なシナリオのために使用されるべきです。
2.Fluxコンポーネント
N個の要素に非同期シーケンス0の磁束代表、示されるように、通知シーケンス束に対するメッセージの3種類があります。
次のサンプルコードは、フックス、特定のプロジェクトにコンポーネントを使用する方法を示しています。我々はマイクロサービスアーキテクチャベースのHystrix Iサービスフォールバック(フォールバック)のメカニズムを理解していれば、彼らは、コードgetordersfallbackoを知っておくべき一般的なフォールバック機能で、我々はFIux.fromlterableoの方法を構築し Flux<Order>
たオブジェクトのフォールバック機能として返さ値。
サービスのフォールバックについてのメカニズムは、具体的には、以下のセクションで説明します
プライベートフラックス<順序> getordersfallback(){ リスト <順序> fallbacklist = 新規のArrayList <> (); 受注オーダー = 新秩序(); order.setid( "orderinvalidid" ); order.setaccountid( "Invalidid" ); order.setitem(「注文リストは利用できません」); order.setcreatetime(新しい日付(); fallbacklist.add(オーダー); を返すFlux.fromiterable(fallbacklistを); }
以下の実施例は、より容易に、オーダーのためのオブジェクトのリストを返すコントローラエンドポイントで配置されGetmappingメソッド名@アノテーションから見た、ということが理解しました。ここでは同じで注文一覧に戻るにはFlux< Order>
、レンダリングするオブジェクト。
( "/ VL /受注" @getmapping ) 公衆フラックス<オーダー> getorderlist(){ フラックス <オーダー>注文= OrderServiceの。getorders(); リターン注文。 }
3.Mono组件
反応器中の、Monoは0を表し、または非同期配列要素は、示されるように、配列はまた、フックスメッセージ通知の同じ3つのタイプを含むことができる含みます。
、Monoはまた、(Runnableを内のJavaと同様に)配列の末端の唯一の概念を含む、という要素空非同期シーケンスを示すために使用することができるのでご注意ください。私たちはできるMono<void>
空の非同期のシーケンスを表します。
FIuxようなサービス・フォールバックによる成分はモノコンポーネント、以下のサンプル・コードの使用を実証します。
private Mono<order> getorderfallback(){ Order order = new Order(); order.setid("orderinvalidid"); order.setaccountid("Invalidid"); order.setitem("Order list is not available"); order.setcreatetime(new Date()); return Mono.just(order); }
这里首构建一个 Order对象,然后通过 Mono.just()方法返回一个Mono对象。
Controller层组件也是一样的,通过d获取Mono<Order>
对象的端点示例如下。
@tapping( "/ VL /注文/ {ID}" ) 公衆モノ<秩序> getorder(@Pathvariable文字列ID){ モノ <オーダー> オーダーorderservice.getorderbyid(ID)。 戻り値の順。 }
モノ比べ、フラックスは、より汎用性の高い応答性成分であるので、モノよりも操作のFIuxため豊か。一方、互いにFIuxとMonoを変換することができます。配列はカウント動作がモノラルオブジェクト得られるFIuxながら、例えば、2つの配列はモノフラックスは、配列を得るために組み合わせ。