大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 Dubbo的使用注意點

Dubbo的使用注意點

更新時間:2021-06-30 16:30:13 來源:動力節點 瀏覽1149次

采用注解方式注入消費者接口實力空指針

注解的方式在現在的項目中由于他的簡潔性越來越被大眾所喜歡,在我們集成dubbox的時候,發現dubbox支持了注解方式,但是在我們在用注解式集成的時候,發現消費者的對象在沒有注入進去,一直都是報空指針異常.

/**
 * <p>
 * bug反饋業務接口
 * </p>
 *
 * @author wangguangdong
 * @version 1.0
 * @Date 2016年10月12日16:18:30
 */
@AuthAnnotation
@Controller
public class BugReportResource {

    private static final Logger LOG = Logger.getLogger(BugReportResource.class);
    @Reference(version = "1.0.0",interfaceClass = BugReportService.class)
    BugReportService bugReportService;
}

經過查找原因,后來終于找到問題所在:

在spirng進行實例掃描的時候根本無法識別dubbo中的注解 Reference,同時,在dubbo掃描的時候也無法識別Spring Controller,所以兩個框架的掃描順序要排列好,如果先掃了controller,這時候把控制器都實例化好了,再掃dubbo的服務,就會出現空指針,因為在實例化的時候是沒有對應的消費者的實例的,所以就會造成無法注入,這也就是為什么在我們調用消費者服務的時候會造成空指針.

下面是編排成功的代碼.

    <mvc:annotation-driven />
    
    <!-- 查找xxx路徑下所有@Controller 注釋類,添加與項目相關的controller -->
    
    <dubbo:annotation package="XXX.XXX.XXX.controller" />
    
    <context:component-scan base-package="XXX.XXX.XXX.controller"/>

然后在查閱資料之后,樓主又發現了另一種解決辦法:

在一個spring對象中注入dubbo消費者實例,然后在controller中注入這個服務實例即可,這種方法不受dubbo和spirng掃描順序的影響.其實在項目中我們可能也會有這樣的設計(有些的架構改進會進行這樣的設計,比如我吧所有的服務細粒度化拆分,并作為提供者注冊給dubbo的server,然后我在消費者端多架構一個組合服務層(業務編排service層),進行dubbo子服務的組合,再講組合后的服務注入到controller中供業務側使用)

    @Component
    public class DubboSupport
    {
        @Reference(version = "1.0.0",interfaceClass = BugReportService.class)
         BugReportService bugReportService;     
        public BugReportService getBugReportService(){
            return bugReportService;
        }
    }

Dubbo超時和重連

dubbo啟動時默認有重試機制和超時機制,某些業務場景下,如果不注意配置超時和重試,可能會引起一些異常。

超時機制的規則是如果在一定的時間內,provider沒有返回,則認為本次調用失敗

重試機制在出現調用失敗時,會再次調用。如果在配置的調用次數內都失敗,則認為此次請求異常,拋出異常。(dubbo默認重試2次)

如果出現超時,通常是業務處理太慢或者發送io阻塞,可在服務提供方執行:jstack PID&gt;jstack.log分析線程都卡在哪個方法調用上,這里就是慢的原因。如果這個服務接口不能調優性能,請將timeout設大。

超時設置

DUBBO消費端設置超時時間需要根據業務實際情況來設定,如果設置的時間太短,一些復雜業務需要很長時間完成,導致在設定的超時時間內無法完成正常的業務處理。這樣消費端達到超時時間,那么dubbo會進行重試機制,不合理的重試在一些特殊的業務場景下可能會引發很多問題,需要合理設置接口超時時間。

比如發送郵件,可能就會發出多份重復郵件,執行注冊請求時,就會插入多條重復的注冊數據。

1.合理配置超時和重連的思路

對于核心的服務中心,去除dubbo超時重試機制,并重新評估設置超時時間。

業務處理代碼必須放在服務端,客戶端只做參數驗證和服務調用,不涉及業務流程處理

2.Dubbo超時和重連配置示例

    <!-- 服務調用超時設置為6秒,超時不重試--> 
    <dubbo:service interface="com.provider.service.DemoService" ref="demoService"  retries="0" timeout="5000"/>

3.Dubbo消費者端統一的超時和重連配置

    <!--統一的消費者配置-->
    <dubbo:consumer timeout="30000" retries="0" version="1.0.0"/>

以上就是動力節點小編介紹的"Dubbo的使用注意點",希望對大家有幫助,想了解更多可查看Dubbo教程,如有疑問,請在線咨詢,有專業老師隨時為您服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 久久精品国产亚洲麻豆 | 伊人精品在线视频 | 欧美大片在线观看成人 | 成人精品一区二区三区中文字幕 | 最新狠狠色狠狠色综合 | 性生大片一级毛片免费观看 | 亚州在线播放 | 一级无遮挡理论片 | 中文字幕影院 | 老司机午夜性大片 | 亚洲综合网在线观看 | 99久久免费国产精品 | xxxx久久 | 中文字幕日韩精品亚洲七区 | 97干成人| 内部片免费一区 | 色天使色婷婷丁香久久综合 | 欧美福利精品福利视频在线观看 | 香蕉国产综合久久猫咪 | 热久久久 | 天天碰夜夜操 | 波多野结衣亚洲一区二区三区 | 亚洲精品美女视频 | 久久99热精品免费观看无卡顿 | 欧美精品在线观看 | 8050午夜一级全黄毛片 | 羞污影院 | 一级毛片私人影院老司机 | 亚洲国产精品久久久久婷婷老年 | 色鬼久久爱综合久久鬼色 | 亚洲国产天堂久久精品网 | 在线视频欧美日韩 | 拍拍拍无挡视频免费观看1000 | 国产成人免费网站在线观看 | 亚洲欧洲一区二区三区在线 | 日本a∨在线播放高清 | 成人午夜精品网站在线观看 | 久久精品国产视频在热 | 四虎精品永久在线网址 | 亚洲人成网站999久久久综合 | 天天拍夜夜添久久精品免费 |