Commit 94e19997 by shiya_dxm

add order to listener

parent 386b8178
......@@ -5,6 +5,7 @@ package com.nepxion.discovery.plugin.framework.listener.discovery;
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
*
* @author Haojun Ren
* @version 1.0
*/
......@@ -13,12 +14,20 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import com.nepxion.discovery.plugin.framework.listener.BasicListener;
import org.springframework.core.Ordered;
public abstract class AbstractDiscoveryListener extends BasicListener implements DiscoveryListener {
import javax.annotation.Priority;
public abstract class AbstractDiscoveryListener extends BasicListener implements DiscoveryListener, Ordered {
@Autowired
protected DiscoveryClient discoveryClient;
public DiscoveryClient getDiscoveryClient() {
return discoveryClient;
}
@Override
public int getOrder() {
return 0;
}
}
\ No newline at end of file
......@@ -5,45 +5,33 @@ package com.nepxion.discovery.plugin.framework.listener.discovery;
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
*
* @author Haojun Ren
* @version 1.0
*/
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import java.util.List;
// 因为内置监听触发的时候,需要优先过滤,所以顺序执行
public class DiscoveryListenerExecutor {
@Autowired
private HostFilterDiscoveryListener hostFilterDiscoveryListener;
@Autowired
private VersionFilterDiscoveryListener versionFilterDiscoveryListener;
@Autowired
private List<DiscoveryListener> discoveryListenerList;
public void onGetInstances(String serviceId, List<ServiceInstance> instances) {
hostFilterDiscoveryListener.onGetInstances(serviceId, instances);
versionFilterDiscoveryListener.onGetInstances(serviceId, instances);
for (DiscoveryListener discoveryListener : discoveryListenerList) {
if (discoveryListener != hostFilterDiscoveryListener && discoveryListener != versionFilterDiscoveryListener) {
discoveryListener.onGetInstances(serviceId, instances);
}
}
}
public void onGetServices(List<String> services) {
hostFilterDiscoveryListener.onGetServices(services);
versionFilterDiscoveryListener.onGetServices(services);
for (DiscoveryListener discoveryListener : discoveryListenerList) {
if (discoveryListener != hostFilterDiscoveryListener && discoveryListener != versionFilterDiscoveryListener) {
discoveryListener.onGetServices(services);
}
}
}
}
\ No newline at end of file
......@@ -5,6 +5,7 @@ package com.nepxion.discovery.plugin.framework.listener.discovery;
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
*
* @author Haojun Ren
* @version 1.0
*/
......@@ -21,6 +22,8 @@ import com.nepxion.discovery.common.entity.DiscoveryEntity;
import com.nepxion.discovery.common.entity.FilterType;
import com.nepxion.discovery.common.entity.HostFilterEntity;
import com.nepxion.discovery.common.entity.RuleEntity;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
public class HostFilterDiscoveryListener extends AbstractDiscoveryListener {
@Override
......@@ -108,4 +111,11 @@ public class HostFilterDiscoveryListener extends AbstractDiscoveryListener {
public void onGetServices(List<String> services) {
}
@Override
public int getOrder() {
// highest priority
return Ordered.HIGHEST_PRECEDENCE;
}
}
\ No newline at end of file
......@@ -5,25 +5,26 @@ package com.nepxion.discovery.plugin.framework.listener.discovery;
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
*
* @author Haojun Ren
* @version 1.0
*/
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import com.nepxion.discovery.common.constant.DiscoveryConstant;
import com.nepxion.discovery.common.entity.DiscoveryEntity;
import com.nepxion.discovery.common.entity.RuleEntity;
import com.nepxion.discovery.common.entity.VersionEntity;
import com.nepxion.discovery.common.entity.VersionFilterEntity;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.core.Ordered;
import com.nepxion.discovery.common.constant.DiscoveryConstant;
import com.nepxion.discovery.common.entity.DiscoveryEntity;
import com.nepxion.discovery.common.entity.VersionEntity;
import com.nepxion.discovery.common.entity.RuleEntity;
import com.nepxion.discovery.common.entity.VersionFilterEntity;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class VersionFilterDiscoveryListener extends AbstractDiscoveryListener {
@Override
......@@ -125,4 +126,10 @@ public class VersionFilterDiscoveryListener extends AbstractDiscoveryListener {
public void onGetServices(List<String> services) {
}
@Override
public int getOrder() {
// after host filter
return Ordered.HIGHEST_PRECEDENCE + 1;
}
}
\ No newline at end of file
......@@ -10,7 +10,13 @@ package com.nepxion.discovery.plugin.framework.listener.loadbalance;
*/
import com.nepxion.discovery.plugin.framework.listener.BasicListener;
import org.springframework.core.Ordered;
public abstract class AbstractLoadBalanceListener extends BasicListener implements LoadBalanceListener {
public abstract class AbstractLoadBalanceListener extends BasicListener implements LoadBalanceListener,Ordered {
@Override
public int getOrder() {
return 0;
}
}
\ No newline at end of file
......@@ -5,22 +5,23 @@ package com.nepxion.discovery.plugin.framework.listener.loadbalance;
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
*
* @author Haojun Ren
* @version 1.0
*/
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.commons.collections4.CollectionUtils;
import com.nepxion.discovery.common.entity.DiscoveryEntity;
import com.nepxion.discovery.common.entity.FilterType;
import com.nepxion.discovery.common.entity.HostFilterEntity;
import com.nepxion.discovery.common.entity.RuleEntity;
import com.netflix.loadbalancer.Server;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.core.Ordered;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class HostFilterLoadBalanceListener extends AbstractLoadBalanceListener {
@Override
......@@ -103,4 +104,9 @@ public class HostFilterLoadBalanceListener extends AbstractLoadBalanceListener {
return matched;
}
@Override
public int getOrder() {
return Ordered.HIGHEST_PRECEDENCE;
}
}
\ No newline at end of file
......@@ -5,24 +5,19 @@ package com.nepxion.discovery.plugin.framework.listener.loadbalance;
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
*
* @author Haojun Ren
* @version 1.0
*/
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import com.netflix.loadbalancer.Server;
import com.netflix.loadbalancer.ZoneAwareLoadBalancer;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
// 因为内置监听触发的时候,需要优先过滤,所以顺序执行
public class LoadBalanceListenerExecutor {
@Autowired
private HostFilterLoadBalanceListener hostFilterLoadBalanceListener;
@Autowired
private VersionFilterLoadBalanceListener versionFilterLoadBalanceListener;
@Autowired
private List<LoadBalanceListener> loadBalanceListenerList;
......@@ -30,15 +25,11 @@ public class LoadBalanceListenerExecutor {
private ZoneAwareLoadBalancer<?> loadBalancer;
public void onGetServers(String serviceId, List<? extends Server> servers) {
hostFilterLoadBalanceListener.onGetServers(serviceId, servers);
versionFilterLoadBalanceListener.onGetServers(serviceId, servers);
for (LoadBalanceListener loadBalanceListener : loadBalanceListenerList) {
if (loadBalanceListener != hostFilterLoadBalanceListener && loadBalanceListener != versionFilterLoadBalanceListener) {
loadBalanceListener.onGetServers(serviceId, servers);
}
}
}
public ZoneAwareLoadBalancer<?> getLoadBalancer() {
return loadBalancer;
......
......@@ -5,24 +5,25 @@ package com.nepxion.discovery.plugin.framework.listener.loadbalance;
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
*
* @author Haojun Ren
* @version 1.0
*/
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import com.nepxion.discovery.common.entity.DiscoveryEntity;
import com.nepxion.discovery.common.entity.VersionEntity;
import com.nepxion.discovery.common.entity.RuleEntity;
import com.nepxion.discovery.common.entity.VersionEntity;
import com.nepxion.discovery.common.entity.VersionFilterEntity;
import com.netflix.loadbalancer.Server;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.core.Ordered;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class VersionFilterLoadBalanceListener extends AbstractLoadBalanceListener {
@Override
......@@ -119,4 +120,9 @@ public class VersionFilterLoadBalanceListener extends AbstractLoadBalanceListene
}
}
}
@Override
public int getOrder() {
return Ordered.HIGHEST_PRECEDENCE + 1;
}
}
\ No newline at end of file
......@@ -5,20 +5,26 @@ package com.nepxion.discovery.plugin.framework.listener.register;
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
*
* @author Haojun Ren
* @version 1.0
*/
import com.nepxion.discovery.plugin.framework.listener.BasicListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.serviceregistry.ServiceRegistry;
import org.springframework.core.Ordered;
import com.nepxion.discovery.plugin.framework.listener.BasicListener;
public abstract class AbstractRegisterListener extends BasicListener implements RegisterListener {
public abstract class AbstractRegisterListener extends BasicListener implements RegisterListener, Ordered {
@Autowired
protected ServiceRegistry<?> serviceRegistry;
public ServiceRegistry<?> getServiceRegistry() {
return serviceRegistry;
}
@Override
public int getOrder() {
return 0;
}
}
\ No newline at end of file
......@@ -5,15 +5,11 @@ package com.nepxion.discovery.plugin.framework.listener.register;
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
*
* @author Haojun Ren
* @version 1.0
*/
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.serviceregistry.Registration;
import com.nepxion.discovery.common.constant.DiscoveryConstant;
import com.nepxion.discovery.common.entity.CountFilterEntity;
import com.nepxion.discovery.common.entity.RegisterEntity;
......@@ -21,6 +17,11 @@ import com.nepxion.discovery.common.entity.RuleEntity;
import com.nepxion.discovery.common.exception.DiscoveryException;
import com.nepxion.discovery.plugin.framework.decorator.DiscoveryClientDecorator;
import com.nepxion.discovery.plugin.framework.event.RegisterFailureEvent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.serviceregistry.Registration;
import org.springframework.core.Ordered;
import java.util.Map;
public class CountFilterRegisterListener extends AbstractRegisterListener {
@Autowired
......@@ -95,4 +96,10 @@ public class CountFilterRegisterListener extends AbstractRegisterListener {
public void onClose() {
}
@Override
public int getOrder() {
// before host filter
return Ordered.LOWEST_PRECEDENCE - 1;
}
}
\ No newline at end of file
......@@ -5,23 +5,24 @@ package com.nepxion.discovery.plugin.framework.listener.register;
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
*
* @author Haojun Ren
* @version 1.0
*/
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.cloud.client.serviceregistry.Registration;
import com.nepxion.discovery.common.entity.FilterType;
import com.nepxion.discovery.common.entity.HostFilterEntity;
import com.nepxion.discovery.common.entity.RegisterEntity;
import com.nepxion.discovery.common.entity.RuleEntity;
import com.nepxion.discovery.common.exception.DiscoveryException;
import com.nepxion.discovery.plugin.framework.event.RegisterFailureEvent;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.cloud.client.serviceregistry.Registration;
import org.springframework.core.Ordered;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class HostFilterRegisterListener extends AbstractRegisterListener {
@Override
......@@ -122,4 +123,10 @@ public class HostFilterRegisterListener extends AbstractRegisterListener {
public void onClose() {
}
@Override
public int getOrder() {
// lowest priority
return Ordered.LOWEST_PRECEDENCE;
}
}
\ No newline at end of file
......@@ -5,67 +5,44 @@ package com.nepxion.discovery.plugin.framework.listener.register;
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
*
* @author Haojun Ren
* @version 1.0
*/
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.serviceregistry.Registration;
import java.util.List;
// 因为内置监听触发的时候,会抛异常处理,所以逆序执行
public class RegisterListenerExecutor {
@Autowired
private CountFilterRegisterListener countFilterRegisterListener;
@Autowired
private HostFilterRegisterListener hostFilterRegisterListener;
@Autowired
private List<RegisterListener> registerListenerList;
public void onRegister(Registration registration) {
for (RegisterListener registerListener : registerListenerList) {
if (registerListener != countFilterRegisterListener && registerListener != hostFilterRegisterListener) {
registerListener.onRegister(registration);
}
}
countFilterRegisterListener.onRegister(registration);
hostFilterRegisterListener.onRegister(registration);
}
public void onDeregister(Registration registration) {
for (RegisterListener registerListener : registerListenerList) {
if (registerListener != countFilterRegisterListener && registerListener != hostFilterRegisterListener) {
registerListener.onDeregister(registration);
}
}
countFilterRegisterListener.onDeregister(registration);
hostFilterRegisterListener.onDeregister(registration);
}
}
public void onSetStatus(Registration registration, String status) {
for (RegisterListener registerListener : registerListenerList) {
if (registerListener != countFilterRegisterListener && registerListener != hostFilterRegisterListener) {
registerListener.onSetStatus(registration, status);
}
}
countFilterRegisterListener.onSetStatus(registration, status);
hostFilterRegisterListener.onSetStatus(registration, status);
}
public void onClose() {
for (RegisterListener registerListener : registerListenerList) {
if (registerListener != countFilterRegisterListener && registerListener != hostFilterRegisterListener) {
registerListener.onClose();
}
}
countFilterRegisterListener.onClose();
hostFilterRegisterListener.onClose();
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment