摘要:在編程中有時候我們需要對做一些特定業務邏輯。諸如的絕大部分都依賴于和都是推送數據詳情請看,如果本身無數據可推送,那么就不會觸發。換句話說內部是不可能得到的。那么怎么做才可以你可以使用的來作為中間值除了之外,還提供了來處理。
在Reactor編程中有時候我們需要對empty Mono
public void oldCheck(Token token) { if (token == null) { // business logic return; } if (token.isExpired) { // business logic return; } // business logic return; }
如果讓你改成reactor你也許會改成這樣:
public MonobadCheck(Mono tokenMono) { return tokenMono .flatMap(token -> { if (token == null) { // CAUTION: You will never be in here // business logic return Mono.empty(); } if (token.isExpired) { // business logic return Mono.empty(); } // business logic return Mono.empty(); }); }
上面的示例代碼里的注釋已經寫了if (token == null) {}的這個條件是永遠成立的,這是因為當Mono
那么怎么做才可以?你可以使用Java 8的Optional來作為中間值:
public MonogoodCheck(Mono tokenMono) { return tokenMono // Transform Mono to Mono >. // If Mono is empty, flatMap will not be triggered, // then we will get a empty Mono > .flatMap(token -> Mono.just(Optional.of(token))) // If Mono > is empty, provide an empty Optional , // then we will get a non-empty Mono > anyway .defaultIfEmpty(Optional.empty()) // Since Mono > is not empty, flatMap will always be triggered. .flatMap(tokenOptional -> { if (!tokenOptional.isPresent()) { // business logic return Mono.empty(); } Token token = tokenOptional.get(); if (token.isExpired) { // business logic return Mono.empty(); } // business logic return Mono.empty(); }); }
除了defaultIfEmpty之外,Reactor還提供了switchIfEmpty、repeatWhenEmpty來處理empty Mono/Flux。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74186.html
摘要:添加相關依賴之后,會有這個。接著,根據的源碼分析,會繼續鏈路,到達下一個,即。在中,我們會計算出路由并發送請求到符合條件的。這個是的,會讀取配置并生成路由。本系列代碼地址:https://github.com/JoJoTec/spring-cloud-parent我們繼續分析上一節提到的 WebHandler。加入 Spring Cloud Sleuth 以及 Prometheus 相關依賴...
摘要:升級之路版基本流程講解抽象類本系列代碼地址我們繼續分析上一節提到的。添加相關依賴之后,會有這個。路由權重相關配置功能相關實現類,這個我們這里不關心。這個是的,會讀取配置并生成路由。 本系列代碼地址:??https://github.com/JoJoTec/spring-cloud-parent??我們繼續分析上一節提到的 ...
摘要:公司要做自己的網關,于是先把的過了一遍,然后把源碼在看了一遍,這樣公司的需求就搞定了。包括動態路由,多緯度限流,記錄請求參數及返回參數也可修改。至此,流程就走完了。 公司要做自己的網關,于是先把github的issue過了一遍,然后把gateway源碼在看了一遍,這樣公司的需求就搞定了。包括動態路由,多緯度限流,記錄請求參數及返回參數(也可修改)。先從請求進入網關說起吧: 請求先進...
摘要:默認配置所謂默認配置就是對不做任何配置讓它的自動配置起作用目的是對的默認行為有一個初步的直觀的了解第一步使用的創建項目項目創建完成會自動生成一個應用入口類第二步創建一個控制器啟動會在控制臺輸出中看到一個水機生成的格式的密碼最后打開即可顯示 默認配置 所謂默認配置, 就是對Spring Security不做任何配置. 讓它的自動配置起作用. 目的是對Spring Security 的默認...
摘要:的這幾天看了看的請求處理流程,因為之前一直用的和,一開始對的處理流程有點懵逼,找不到入口,后來跟了代碼,在網上找了點資料,發現的入口在的方法該方法的作用就是把接收到的或者最終需要返回的,包裝轉換為和。 spring-cloud-gateway 的ReactorHttpHandlerAdapter 這幾天看了看spring-cloud-gateway的請求處理流程,因為之前一直用的spr...
閱讀 1048·2021-10-11 10:59
閱讀 3601·2021-09-26 09:55
閱讀 891·2019-08-30 15:55
閱讀 2650·2019-08-30 15:44
閱讀 434·2019-08-30 14:06
閱讀 680·2019-08-30 11:26
閱讀 3336·2019-08-30 10:49
閱讀 2466·2019-08-29 12:53