衰退チュートリアルシリーズに対応してSpringCloud戦闘サービス(章IV)

1を接続します。

衰退チュートリアルシリーズに対応してSpringCloud戦闘サービス(第一章)

チュートリアルの衰退シリーズ(第II章)に対応してSpringCloud戦闘サービス

衰退チュートリアルシリーズに対応してSpringCloud戦闘サービス(第III章)

1.1.4原子炉のフレームワークが導入します

あなたは原子炉のフレームワークのコードを統合する場合は、それぞれ、次のMavenの依存を追加する必要があり、および関連ツールは、テストをサポートするために原子炉のコア機能に導入します。

<依存性> 
    <グループID> io.projectreactor </グループID> 
    <cartifactid>反応器コア/成果物> 
</依存> 
<依存性> 
   <グループID> io.projectreactor </グループID> 
   <cartifactid>反応器テスト/成果物> 
   <スコープ>テスト</スコープ> 
</依存>

 

原子炉のフレームは、応答フロー仕様の実現におけるその具体的な設計になっています。このセクションでは、最初のシーケンス炉非同期データフレームを説明し、その後、フラックスモノラル2つのコア・コンポーネントを導入します。

1.原子炉非同期データ系列

炉応答アプリケーションを開発する際に、関係なく、オペレータの使用の非同期データを図に示したシーケンスを受信します。

衰退チュートリアルシリーズに対応してSpringCloud戦闘サービス(章IV)

onNext X 0..N [のonError | onCompleteの]

方法の3つの異なるタイプを含む上記式を呼び出し、通知メッセージは、異なるシナリオの下で処理されます。

  • onNext():正常な通知メッセージを含む素子。

  • onCompleted():配列通知メッセージの終わり、できません。

  • onError():配列通知メッセージエラーがないがあってもよいです。

通知メッセージが生成された応答フロー仕様、これらの3つの方法に従って、非同期配列加入者が呼び出され、対応します。順序が間違っていない場合は、ONERROR()メソッドが呼び出されることはありません。あなたはonCompleteの()メソッドを呼び出していない場合は、非同期の無限列を取得します。典型的には、非同期の無限配列は、テストおよび他の特別なシナリオのために使用されるべきです。

2.Fluxコンポーネント

N個の要素に非同期シーケンス0の磁束代表、示されるように、通知シーケンス束に対するメッセージの3種類があります。

衰退チュートリアルシリーズに対応してSpringCloud戦闘サービス(章IV)

次のサンプルコードは、フックス、特定のプロジェクトにコンポーネントを使用する方法を示しています。我々はマイクロサービスアーキテクチャベースの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>空の非同期のシーケンスを表します。

衰退チュートリアルシリーズに対応してSpringCloud戦闘サービス(章IV)

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つの配列はモノフラックスは、配列を得るために組み合わせ。

おすすめ

転載: www.cnblogs.com/javazhiyin/p/11423057.html