Commit 527c004c by Nepxion

重构成Listener

parent 9a0399ee
......@@ -17,11 +17,11 @@ import org.springframework.context.annotation.Configuration;
import com.nepxion.discovery.plugin.framework.context.PluginContextAware;
import com.nepxion.discovery.plugin.framework.entity.RuleEntity;
import com.nepxion.discovery.plugin.framework.event.PluginPublisher;
import com.nepxion.discovery.plugin.framework.strategy.DiscoveryStrategyExecutor;
import com.nepxion.discovery.plugin.framework.strategy.RegisterStrategyExecutor;
import com.nepxion.discovery.plugin.framework.strategy.impl.IpAddressFilterDiscoveryStrategy;
import com.nepxion.discovery.plugin.framework.strategy.impl.IpAddressFilterRegisterStrategy;
import com.nepxion.discovery.plugin.framework.strategy.impl.VersionFilterDiscoveryStrategy;
import com.nepxion.discovery.plugin.framework.listener.DiscoveryListenerExecutor;
import com.nepxion.discovery.plugin.framework.listener.RegisterListenerExecutor;
import com.nepxion.discovery.plugin.framework.listener.impl.IpAddressFilterDiscoveryListener;
import com.nepxion.discovery.plugin.framework.listener.impl.IpAddressFilterRegisterListener;
import com.nepxion.discovery.plugin.framework.listener.impl.VersionFilterDiscoveryListener;
@Configuration
public class PluginAutoConfiguration {
......@@ -60,27 +60,27 @@ public class PluginAutoConfiguration {
}
@Bean
public RegisterStrategyExecutor registerStrategyExecutor() {
return new RegisterStrategyExecutor();
public RegisterListenerExecutor registerListenerExecutor() {
return new RegisterListenerExecutor();
}
@Bean
public DiscoveryStrategyExecutor discoveryStrategyExecutor() {
return new DiscoveryStrategyExecutor();
public DiscoveryListenerExecutor discoveryListenerExecutor() {
return new DiscoveryListenerExecutor();
}
@Bean
public IpAddressFilterRegisterStrategy ipAddressFilterRegisterStrategy() {
return new IpAddressFilterRegisterStrategy();
public IpAddressFilterRegisterListener ipAddressFilterRegisterListener() {
return new IpAddressFilterRegisterListener();
}
@Bean
public IpAddressFilterDiscoveryStrategy ipAddressFilterDiscoveryStrategy() {
return new IpAddressFilterDiscoveryStrategy();
public IpAddressFilterDiscoveryListener ipAddressFilterDiscoveryListener() {
return new IpAddressFilterDiscoveryListener();
}
@Bean
public VersionFilterDiscoveryStrategy versionFilterDiscoveryStrategy() {
return new VersionFilterDiscoveryStrategy();
public VersionFilterDiscoveryListener versionFilterDiscoveryListener() {
return new VersionFilterDiscoveryListener();
}
}
\ No newline at end of file
......@@ -17,7 +17,7 @@ import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
import com.nepxion.discovery.plugin.framework.context.PluginContextAware;
import com.nepxion.discovery.plugin.framework.strategy.DiscoveryStrategyExecutor;
import com.nepxion.discovery.plugin.framework.listener.DiscoveryListenerExecutor;
public class DiscoveryClientDecorator implements DiscoveryClient {
private DiscoveryClient discoveryClient;
......@@ -36,8 +36,8 @@ public class DiscoveryClientDecorator implements DiscoveryClient {
Boolean discoveryControlEnabled = PluginContextAware.isDiscoveryControlEnabled(environment);
if (discoveryControlEnabled) {
DiscoveryStrategyExecutor discoveryStrategyExecutor = applicationContext.getBean(DiscoveryStrategyExecutor.class);
discoveryStrategyExecutor.fireGetInstances(serviceId, instances);
DiscoveryListenerExecutor discoveryListenerExecutor = applicationContext.getBean(DiscoveryListenerExecutor.class);
discoveryListenerExecutor.fireGetInstances(serviceId, instances);
}
return instances;
......@@ -49,8 +49,8 @@ public class DiscoveryClientDecorator implements DiscoveryClient {
Boolean discoveryControlEnabled = PluginContextAware.isDiscoveryControlEnabled(environment);
if (discoveryControlEnabled) {
DiscoveryStrategyExecutor discoveryStrategyExecutor = applicationContext.getBean(DiscoveryStrategyExecutor.class);
discoveryStrategyExecutor.fireGetServices(services);
DiscoveryListenerExecutor discoveryListenerExecutor = applicationContext.getBean(DiscoveryListenerExecutor.class);
discoveryListenerExecutor.fireGetServices(services);
}
return services;
......
......@@ -16,7 +16,7 @@ import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
import com.nepxion.discovery.plugin.framework.context.PluginContextAware;
import com.nepxion.discovery.plugin.framework.strategy.RegisterStrategyExecutor;
import com.nepxion.discovery.plugin.framework.listener.RegisterListenerExecutor;
public class EurekaServiceRegistryDecorator extends EurekaServiceRegistry {
private ServiceRegistry<EurekaRegistration> serviceRegistry;
......@@ -33,8 +33,8 @@ public class EurekaServiceRegistryDecorator extends EurekaServiceRegistry {
public void register(EurekaRegistration registration) {
Boolean registerControlEnabled = PluginContextAware.isRegisterControlEnabled(environment);
if (registerControlEnabled) {
RegisterStrategyExecutor registerStrategyExecutor = applicationContext.getBean(RegisterStrategyExecutor.class);
registerStrategyExecutor.fireRegister(registration);
RegisterListenerExecutor registerListenerExecutor = applicationContext.getBean(RegisterListenerExecutor.class);
registerListenerExecutor.fireRegister(registration);
}
serviceRegistry.register(registration);
......@@ -44,8 +44,8 @@ public class EurekaServiceRegistryDecorator extends EurekaServiceRegistry {
public void deregister(EurekaRegistration registration) {
Boolean registerControlEnabled = PluginContextAware.isRegisterControlEnabled(environment);
if (registerControlEnabled) {
RegisterStrategyExecutor registerStrategyExecutor = applicationContext.getBean(RegisterStrategyExecutor.class);
registerStrategyExecutor.fireDeregister(registration);
RegisterListenerExecutor registerListenerExecutor = applicationContext.getBean(RegisterListenerExecutor.class);
registerListenerExecutor.fireDeregister(registration);
}
serviceRegistry.deregister(registration);
......@@ -55,8 +55,8 @@ public class EurekaServiceRegistryDecorator extends EurekaServiceRegistry {
public void setStatus(EurekaRegistration registration, String status) {
Boolean registerControlEnabled = PluginContextAware.isRegisterControlEnabled(environment);
if (registerControlEnabled) {
RegisterStrategyExecutor registerStrategyExecutor = applicationContext.getBean(RegisterStrategyExecutor.class);
registerStrategyExecutor.fireSetStatus(registration, status);
RegisterListenerExecutor registerListenerExecutor = applicationContext.getBean(RegisterListenerExecutor.class);
registerListenerExecutor.fireSetStatus(registration, status);
}
serviceRegistry.setStatus(registration, status);
......@@ -71,8 +71,8 @@ public class EurekaServiceRegistryDecorator extends EurekaServiceRegistry {
public void close() {
Boolean registerControlEnabled = PluginContextAware.isRegisterControlEnabled(environment);
if (registerControlEnabled) {
RegisterStrategyExecutor registerStrategyExecutor = applicationContext.getBean(RegisterStrategyExecutor.class);
registerStrategyExecutor.fireClose();
RegisterListenerExecutor registerListenerExecutor = applicationContext.getBean(RegisterListenerExecutor.class);
registerListenerExecutor.fireClose();
}
serviceRegistry.close();
......
package com.nepxion.discovery.plugin.framework.strategy;
package com.nepxion.discovery.plugin.framework.listener;
/**
* <p>Title: Nepxion Discovery</p>
......@@ -12,7 +12,7 @@ package com.nepxion.discovery.plugin.framework.strategy;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.discovery.DiscoveryClient;
public abstract class AbstractDiscoveryStrategy extends BasicStrategy implements DiscoveryStrategy {
public abstract class AbstractDiscoveryListener extends BasicListener implements DiscoveryListener {
@Autowired
protected DiscoveryClient discoveryClient;
......
package com.nepxion.discovery.plugin.framework.strategy;
package com.nepxion.discovery.plugin.framework.listener;
/**
* <p>Title: Nepxion Discovery</p>
......@@ -12,7 +12,7 @@ package com.nepxion.discovery.plugin.framework.strategy;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.serviceregistry.ServiceRegistry;
public abstract class AbstractRegisterStrategy extends BasicStrategy implements RegisterStrategy {
public abstract class AbstractRegisterListener extends BasicListener implements RegisterListener {
@Autowired
protected ServiceRegistry<?> serviceRegistry;
......
package com.nepxion.discovery.plugin.framework.strategy;
package com.nepxion.discovery.plugin.framework.listener;
/**
* <p>Title: Nepxion Discovery</p>
......@@ -13,7 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
public class BasicStrategy implements Strategy {
public class BasicListener implements Listener {
@Autowired
protected ConfigurableApplicationContext applicationContext;
......
package com.nepxion.discovery.plugin.framework.strategy;
package com.nepxion.discovery.plugin.framework.listener;
/**
* <p>Title: Nepxion Discovery</p>
......@@ -13,7 +13,7 @@ import java.util.List;
import org.springframework.cloud.client.ServiceInstance;
public interface DiscoveryStrategy extends Strategy {
public interface DiscoveryListener extends Listener {
void fireGetInstances(String serviceId, List<ServiceInstance> instances);
void fireGetServices(List<String> services);
......
package com.nepxion.discovery.plugin.framework.strategy;
package com.nepxion.discovery.plugin.framework.listener;
/**
* <p>Title: Nepxion Discovery</p>
......@@ -15,19 +15,19 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import com.nepxion.discovery.plugin.framework.strategy.impl.IpAddressFilterDiscoveryStrategy;
import com.nepxion.discovery.plugin.framework.strategy.impl.VersionFilterDiscoveryStrategy;
import com.nepxion.discovery.plugin.framework.listener.impl.IpAddressFilterDiscoveryListener;
import com.nepxion.discovery.plugin.framework.listener.impl.VersionFilterDiscoveryListener;
// 因为内置监听触发的时候,需要优先过滤,所以顺序执行
public class DiscoveryStrategyExecutor {
public class DiscoveryListenerExecutor {
@Autowired
private IpAddressFilterDiscoveryStrategy ipAddressFilterDiscoveryStrategy;
private IpAddressFilterDiscoveryListener ipAddressFilterDiscoveryListener;
@Autowired
private VersionFilterDiscoveryStrategy versionFilterDiscoveryStrategy;
private VersionFilterDiscoveryListener versionFilterDiscoveryListener;
@Autowired
private List<DiscoveryStrategy> discoveryStrategyList;
private List<DiscoveryListener> discoveryListenerList;
@Autowired
private ReentrantReadWriteLock reentrantReadWriteLock;
......@@ -36,12 +36,12 @@ public class DiscoveryStrategyExecutor {
try {
reentrantReadWriteLock.readLock().lock();
ipAddressFilterDiscoveryStrategy.fireGetInstances(serviceId, instances);
versionFilterDiscoveryStrategy.fireGetInstances(serviceId, instances);
ipAddressFilterDiscoveryListener.fireGetInstances(serviceId, instances);
versionFilterDiscoveryListener.fireGetInstances(serviceId, instances);
for (DiscoveryStrategy discoveryStrategy : discoveryStrategyList) {
if (discoveryStrategy != ipAddressFilterDiscoveryStrategy && discoveryStrategy != versionFilterDiscoveryStrategy) {
discoveryStrategy.fireGetInstances(serviceId, instances);
for (DiscoveryListener discoveryListener : discoveryListenerList) {
if (discoveryListener != ipAddressFilterDiscoveryListener && discoveryListener != versionFilterDiscoveryListener) {
discoveryListener.fireGetInstances(serviceId, instances);
}
}
} finally {
......@@ -50,12 +50,12 @@ public class DiscoveryStrategyExecutor {
}
public void fireGetServices(List<String> services) {
ipAddressFilterDiscoveryStrategy.fireGetServices(services);
versionFilterDiscoveryStrategy.fireGetServices(services);
ipAddressFilterDiscoveryListener.fireGetServices(services);
versionFilterDiscoveryListener.fireGetServices(services);
for (DiscoveryStrategy discoveryStrategy : discoveryStrategyList) {
if (discoveryStrategy != ipAddressFilterDiscoveryStrategy && discoveryStrategy != versionFilterDiscoveryStrategy) {
discoveryStrategy.fireGetServices(services);
for (DiscoveryListener discoveryListener : discoveryListenerList) {
if (discoveryListener != ipAddressFilterDiscoveryListener && discoveryListener != versionFilterDiscoveryListener) {
discoveryListener.fireGetServices(services);
}
}
}
......
package com.nepxion.discovery.plugin.framework.strategy;
package com.nepxion.discovery.plugin.framework.listener;
/**
* <p>Title: Nepxion Discovery</p>
......@@ -12,7 +12,7 @@ package com.nepxion.discovery.plugin.framework.strategy;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
public interface Strategy {
public interface Listener {
ConfigurableApplicationContext getApplicationContext();
ConfigurableEnvironment getEnvironment();
......
package com.nepxion.discovery.plugin.framework.strategy;
package com.nepxion.discovery.plugin.framework.listener;
/**
* <p>Title: Nepxion Discovery</p>
......@@ -11,7 +11,7 @@ package com.nepxion.discovery.plugin.framework.strategy;
import org.springframework.cloud.client.serviceregistry.Registration;
public interface RegisterStrategy extends Strategy {
public interface RegisterListener extends Listener {
void fireRegister(Registration registration);
void fireDeregister(Registration registration);
......
package com.nepxion.discovery.plugin.framework.strategy;
package com.nepxion.discovery.plugin.framework.listener;
/**
* <p>Title: Nepxion Discovery</p>
......@@ -15,15 +15,15 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.serviceregistry.Registration;
import com.nepxion.discovery.plugin.framework.strategy.impl.IpAddressFilterRegisterStrategy;
import com.nepxion.discovery.plugin.framework.listener.impl.IpAddressFilterRegisterListener;
// 因为内置监听触发的时候,会抛异常处理,所以逆序执行
public class RegisterStrategyExecutor {
public class RegisterListenerExecutor {
@Autowired
private IpAddressFilterRegisterStrategy ipAddressFilterRegisterStrategy;
private IpAddressFilterRegisterListener ipAddressFilterRegisterListener;
@Autowired
private List<RegisterStrategy> registerStrategyList;
private List<RegisterListener> registerListenerList;
@Autowired
private ReentrantReadWriteLock reentrantReadWriteLock;
......@@ -32,45 +32,45 @@ public class RegisterStrategyExecutor {
try {
reentrantReadWriteLock.readLock().lock();
for (RegisterStrategy registerStrategy : registerStrategyList) {
if (registerStrategy != ipAddressFilterRegisterStrategy) {
registerStrategy.fireRegister(registration);
for (RegisterListener registerListener : registerListenerList) {
if (registerListener != ipAddressFilterRegisterListener) {
registerListener.fireRegister(registration);
}
}
ipAddressFilterRegisterStrategy.fireRegister(registration);
ipAddressFilterRegisterListener.fireRegister(registration);
} finally {
reentrantReadWriteLock.readLock().unlock();
}
}
public void fireDeregister(Registration registration) {
for (RegisterStrategy registerStrategy : registerStrategyList) {
if (registerStrategy != ipAddressFilterRegisterStrategy) {
registerStrategy.fireDeregister(registration);
for (RegisterListener registerListener : registerListenerList) {
if (registerListener != ipAddressFilterRegisterListener) {
registerListener.fireDeregister(registration);
}
}
ipAddressFilterRegisterStrategy.fireDeregister(registration);
ipAddressFilterRegisterListener.fireDeregister(registration);
}
public void fireSetStatus(Registration registration, String status) {
for (RegisterStrategy registerStrategy : registerStrategyList) {
if (registerStrategy != ipAddressFilterRegisterStrategy) {
registerStrategy.fireSetStatus(registration, status);
for (RegisterListener registerListener : registerListenerList) {
if (registerListener != ipAddressFilterRegisterListener) {
registerListener.fireSetStatus(registration, status);
}
}
ipAddressFilterRegisterStrategy.fireSetStatus(registration, status);
ipAddressFilterRegisterListener.fireSetStatus(registration, status);
}
public void fireClose() {
for (RegisterStrategy registerStrategy : registerStrategyList) {
if (registerStrategy != ipAddressFilterRegisterStrategy) {
registerStrategy.fireClose();
for (RegisterListener registerListener : registerListenerList) {
if (registerListener != ipAddressFilterRegisterListener) {
registerListener.fireClose();
}
}
ipAddressFilterRegisterStrategy.fireClose();
ipAddressFilterRegisterListener.fireClose();
}
}
\ No newline at end of file
package com.nepxion.discovery.plugin.framework.strategy.impl;
package com.nepxion.discovery.plugin.framework.listener.impl;
/**
* <p>Title: Nepxion Discovery</p>
......@@ -22,9 +22,9 @@ import com.nepxion.discovery.plugin.framework.entity.DiscoveryEntity;
import com.nepxion.discovery.plugin.framework.entity.FilterEntity;
import com.nepxion.discovery.plugin.framework.entity.FilterType;
import com.nepxion.discovery.plugin.framework.entity.RuleEntity;
import com.nepxion.discovery.plugin.framework.strategy.AbstractDiscoveryStrategy;
import com.nepxion.discovery.plugin.framework.listener.AbstractDiscoveryListener;
public class IpAddressFilterDiscoveryStrategy extends AbstractDiscoveryStrategy {
public class IpAddressFilterDiscoveryListener extends AbstractDiscoveryListener {
@Autowired
private RuleEntity ruleEntity;
......
package com.nepxion.discovery.plugin.framework.strategy.impl;
package com.nepxion.discovery.plugin.framework.listener.impl;
/**
* <p>Title: Nepxion Discovery</p>
......@@ -25,10 +25,10 @@ import com.nepxion.discovery.plugin.framework.entity.FilterType;
import com.nepxion.discovery.plugin.framework.entity.RegisterEntity;
import com.nepxion.discovery.plugin.framework.entity.RuleEntity;
import com.nepxion.discovery.plugin.framework.exception.PluginException;
import com.nepxion.discovery.plugin.framework.strategy.AbstractRegisterStrategy;
import com.nepxion.discovery.plugin.framework.listener.AbstractRegisterListener;
public class IpAddressFilterRegisterStrategy extends AbstractRegisterStrategy {
private static final Logger LOG = LoggerFactory.getLogger(IpAddressFilterRegisterStrategy.class);
public class IpAddressFilterRegisterListener extends AbstractRegisterListener {
private static final Logger LOG = LoggerFactory.getLogger(IpAddressFilterRegisterListener.class);
@Autowired
private RuleEntity ruleEntity;
......
package com.nepxion.discovery.plugin.framework.strategy.impl;
package com.nepxion.discovery.plugin.framework.listener.impl;
/**
* <p>Title: Nepxion Discovery</p>
......@@ -25,9 +25,9 @@ import com.nepxion.discovery.plugin.framework.entity.DiscoveryEntity;
import com.nepxion.discovery.plugin.framework.entity.DiscoveryServiceEntity;
import com.nepxion.discovery.plugin.framework.entity.RuleEntity;
import com.nepxion.discovery.plugin.framework.entity.VersionEntity;
import com.nepxion.discovery.plugin.framework.strategy.AbstractDiscoveryStrategy;
import com.nepxion.discovery.plugin.framework.listener.AbstractDiscoveryListener;
public class VersionFilterDiscoveryStrategy extends AbstractDiscoveryStrategy {
public class VersionFilterDiscoveryListener extends AbstractDiscoveryListener {
@Autowired
private RuleEntity ruleEntity;
......
......@@ -14,8 +14,8 @@ import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.Bean;
import com.nepxion.discovery.plugin.example.extension.MyDiscoveryStrategy;
import com.nepxion.discovery.plugin.example.extension.MyRegisterStrategy;
import com.nepxion.discovery.plugin.example.extension.MyDiscoveryListener;
import com.nepxion.discovery.plugin.example.extension.MyRegisterListener;
import com.nepxion.discovery.plugin.example.impl.DiscoveryConfigAdapter;
@SpringBootApplication
......@@ -31,12 +31,12 @@ public class DiscoveryApplication {
}
@Bean
public MyRegisterStrategy myRegisterStrategy() {
return new MyRegisterStrategy();
public MyRegisterListener myRegisterListener() {
return new MyRegisterListener();
}
@Bean
public MyDiscoveryStrategy myDiscoveryStrategy() {
return new MyDiscoveryStrategy();
public MyDiscoveryListener myDiscoveryListener() {
return new MyDiscoveryListener();
}
}
\ No newline at end of file
......@@ -13,9 +13,9 @@ import java.util.List;
import org.springframework.cloud.client.ServiceInstance;
import com.nepxion.discovery.plugin.framework.strategy.AbstractDiscoveryStrategy;
import com.nepxion.discovery.plugin.framework.listener.AbstractDiscoveryListener;
public class MyDiscoveryStrategy extends AbstractDiscoveryStrategy {
public class MyDiscoveryListener extends AbstractDiscoveryListener {
@Override
public void fireGetInstances(String serviceId, List<ServiceInstance> instances) {
System.out.println("========== getInstances() 被触发:serviceId=" + serviceId + " instances=" + instances + " ==========");
......
......@@ -11,9 +11,9 @@ package com.nepxion.discovery.plugin.example.extension;
import org.springframework.cloud.client.serviceregistry.Registration;
import com.nepxion.discovery.plugin.framework.strategy.AbstractRegisterStrategy;
import com.nepxion.discovery.plugin.framework.listener.AbstractRegisterListener;
public class MyRegisterStrategy extends AbstractRegisterStrategy {
public class MyRegisterListener extends AbstractRegisterListener {
@Override
public void fireRegister(Registration registration) {
......
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