dubbo如何自定義路由實現?


  業務場景:由於多個業務系統都實現了同一個服務,在調用中通過讀取相關配置可以知道此次調用是限制請求到哪幾個服務提供者上,而不是所有提供者中任取一個,這個就需要在dubbo上自定義自己的路由規則。

  具體做法:實現Router接口,重寫route方法,從注冊中心所有服務提供者列表中選出符合規范的提供者列表並返回即可。

  

public class LimitIpRouter implements Router{
    private final static Logger logger = LogManager.getLogger(LimitIpRouter.class);
    @Override
    public List<Provider> route(Invocation invocation, List<Provider> providers) {
        providers.stream().forEach(provider -> logger.info("provider:"+provider.toUrl()));
        //獲取參數中的限制ip列表
        String limitIps = getLimitIps(invocation);
        return providers.stream().filter(provider -> StringUtils.contains(limitIps, provider.getIp())).collect(Collectors.toList());
    }
}

 

  同樣,基於 SPI 機制, 需要添加 configfile

sgpScriptRouter=com.mobanker.sgpagent.client.dubbo.router.SgpScriptRouterFactory

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM