设置降级策略
设置降级策略,您可以定义规则降级为原生DNS解析方式。
注意
降级策略,只负责哪些域名需要降级,对于SDK来说,就是哪些域名直接返回空的解析结果。具体的降级请求操作,是在SDK返回后由业务代码完成的(和SDK没有解析成功的逻辑一致)。SDK本身不会使用Local DNS进行解析。
接口定义
void setDegradationFilter(DegradationFilter filter);
public interface DegradationFilter {
/**
* 降级过滤器
*
* @param hostName 当前的目标域名(如www.aliyun.com),您可以针对域名进行降级过滤
* @return 是否降级走原生DNS逻辑
*/
boolean shouldDegradeHttpDNS(String hostName);
}
参数说明
参数 | 类型 | 是否必填 | 说明 |
filter | DegradationFilter | 是 | 降级代理 |
代码示例
// httpdns为初始化获取的服务实例
DegradationFilter filter = new DegradationFilter() {
@Override
public boolean shouldDegradeHttpDNS(String hostName) {
// 此处可以自定义降级逻辑,例如www.aliyuno.com不使用HttpDNS解析
// 参照HttpDNS API文档,当存在中间HTTP代理时,应选择降级,使用Local DNS
return hostName.equals("www.aliyuno.com");
}
};
// 将filter传进httpdns,解析时会回调shouldDegradeHttpDNS方法,判断是否降级
httpdns.setDegradationFilter(filter);
设置降级过滤器
针对域名进行降级过滤。
接口定义
boolean shouldDegradeHttpDNS(String hostName);
参数说明
参数 | 类型 | 是否必填 | 说明 |
hostname | String | 是 | 当前的目标域名(如www.aliyun.com),您可以针对域名进行降级过滤。 |
return | Boolean | 否 | 是否降级走原生DNS逻辑。 |
代码示例
DegradationFilter filter = new DegradationFilter() {
@Override
public boolean shouldDegradeHttpDNS(String hostName) {
// 此处可以自定义降级逻辑,例如www.aliyuno.com不使用HttpDNS解析
// 参照HttpDNS API文档,当存在中间HTTP代理时,应选择降级,使用Local DNS
return hostName.equals("www.aliyuno.com");
}
};