由于各种原因,目前我司有些项目还在使用dubbox2.8.4 版本,有些功能需要通过parameters参数设置才能实现,现分享如下,希望可以帮助需要的同学
一、自定义路由策略的生效
1、通过xml配置生效
你会发现没有类似 router=xxx 的选项可用,这时候就得使用parameter了
<dubbo:registry address="xx" file="xx" group="xx" >
<dubbo:parameter key="router" value="myRouterFactory" />
</dubbo:registry>
2、通过bean配置生效
也是没有类似router的api可用,只能使用parameter搞定
@Bean
public RegistryConfig registryConfig(){
RegistryConfig registryConfig = new RegistryConfig(dubboRegistryAddress);
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("router","myRouterFactory");
registryConfig.setParameters(hashMap);
return registryConfig;
}
二、设置某个方法的超时时间
1、通过xml方式实现
<dubbo:service interface="xxxxxx" ref="xxxxx">
<dubbo:method name="xxxxx" timeout="60000" retries="1" />
</dubbo:service>
2、通过注解的方式实现
以Service注解为例,Reference用法类似
某个类的超时时间这样设置,针对类中所有方法生效:
@Service(timeout = 5000)
public class A{
a1(){}
a2(){}
a3(){}
}
如果想单独设置a1方法的超时时间呢,你会发现注解里面是没有类似 methods 的参数的,这时候可以通过parameters方式进行配置,如下:
@Service(timeout = 5000,parameters = {"a1.timeout", "10000"})
public class A{
a1(){}
a2(){}
a3(){}
}
多个方法配置:
@Service(timeout = 5000,parameters = {"a1.timeout", "10000","a2.timeout", "15000"})
public class A{
a1(){}
a2(){}
a3(){}
}
三、总结
1、如果你在使用低版本的dubbo,建议升级到 apache 高版本的dubbo,高版本里的配置参数是更完善的;
2、如果你在配置dubbo时发现没有找到自己想要的标签或者属性或者api,这时候就要考虑通过万能的parameter来实现;