|
|
@@ -1,9 +1,7 @@
|
|
|
package com.mrxu.framework.boot.irule;
|
|
|
|
|
|
import com.netflix.loadbalancer.AbstractServerPredicate;
|
|
|
-import com.netflix.loadbalancer.AvailabilityPredicate;
|
|
|
import com.netflix.loadbalancer.CompositePredicate;
|
|
|
-import com.netflix.loadbalancer.ZoneAvoidancePredicate;
|
|
|
import com.netflix.loadbalancer.ZoneAvoidanceRule;
|
|
|
|
|
|
/**
|
|
|
@@ -20,11 +18,9 @@ public class MetadataAwareRule extends ZoneAvoidanceRule {
|
|
|
private CompositePredicate compositePredicate;
|
|
|
|
|
|
public MetadataAwareRule() {
|
|
|
- super();
|
|
|
- ZoneAvoidancePredicate zonePredicate = new ZoneAvoidancePredicate(this,null);
|
|
|
- AvailabilityPredicate availabilityPredicate = new AvailabilityPredicate(this,null);
|
|
|
+ ZoneAvoidanceRule zoneAvoidanceRule = new ZoneAvoidanceRule();
|
|
|
MetadataAwarePredicate metadataAwarePredicate = new MetadataAwarePredicate(this);
|
|
|
- compositePredicate = createCompositePredicate(metadataAwarePredicate,zonePredicate, availabilityPredicate);
|
|
|
+ compositePredicate = createCompositePredicate(metadataAwarePredicate,zoneAvoidanceRule.getPredicate());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -35,14 +31,12 @@ public class MetadataAwareRule extends ZoneAvoidanceRule {
|
|
|
/**
|
|
|
* 优先p0选择,再使用原始的选择逻辑
|
|
|
* @param p0 原信息选择
|
|
|
- * @param p1 地区地域
|
|
|
- * @param p2 可用服务
|
|
|
+ * @param p1 地区地域、可用服务
|
|
|
* @return 组合选择逻辑
|
|
|
*/
|
|
|
- private CompositePredicate createCompositePredicate(MetadataAwarePredicate p0,ZoneAvoidancePredicate p1, AvailabilityPredicate p2) {
|
|
|
- return CompositePredicate.withPredicates(p0,p1,p2)
|
|
|
- .addFallbackPredicate(CompositePredicate.withPredicates(p1,p2).build())
|
|
|
- .addFallbackPredicate(p2)
|
|
|
+ private CompositePredicate createCompositePredicate(MetadataAwarePredicate p0,AbstractServerPredicate p1) {
|
|
|
+ return CompositePredicate.withPredicates(p0, p1)
|
|
|
+ .addFallbackPredicate(p1)
|
|
|
.addFallbackPredicate(AbstractServerPredicate.alwaysTrue())
|
|
|
.build();
|
|
|
}
|