設定降級策略
設定降級策略,您可以定義規則降級為原生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");
}
};