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