Add RegistryCenter.initFizzServiceRegistration
This commit is contained in:
@@ -20,7 +20,7 @@ package we.service_registry;
|
||||
import com.fasterxml.jackson.annotation.JsonCreator;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import we.Fizz;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import we.util.JacksonUtils;
|
||||
|
||||
/**
|
||||
@@ -67,16 +67,17 @@ public class RegistryCenter {
|
||||
this.clientConfig = clientConfig;
|
||||
}
|
||||
|
||||
public void initFizzServiceRegistration(ApplicationContext applicationContext) {
|
||||
fizzServiceRegistration = FizzServiceRegistration.getFizzServiceRegistration(
|
||||
applicationContext,
|
||||
type == EUREKA ? FizzServiceRegistration.Type.EUREKA : FizzServiceRegistration.Type.NACOS,
|
||||
clientConfigFormat == YML ? FizzServiceRegistration.ConfigFormat.YML : FizzServiceRegistration.ConfigFormat.PROPERTIES,
|
||||
clientConfig
|
||||
);
|
||||
}
|
||||
|
||||
@JsonIgnore
|
||||
public FizzServiceRegistration getFizzServiceRegistration() {
|
||||
if (fizzServiceRegistration == null) {
|
||||
fizzServiceRegistration = FizzServiceRegistration.getFizzServiceRegistration(
|
||||
Fizz.context,
|
||||
type == EUREKA ? FizzServiceRegistration.Type.EUREKA : FizzServiceRegistration.Type.NACOS,
|
||||
clientConfigFormat == YML ? FizzServiceRegistration.ConfigFormat.YML : FizzServiceRegistration.ConfigFormat.PROPERTIES,
|
||||
clientConfig
|
||||
);
|
||||
}
|
||||
return fizzServiceRegistration;
|
||||
}
|
||||
|
||||
|
||||
@@ -19,6 +19,9 @@ package we.service_registry;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext;
|
||||
import org.springframework.context.ApplicationListener;
|
||||
import org.springframework.context.event.ContextRefreshedEvent;
|
||||
import org.springframework.data.redis.core.ReactiveStringRedisTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
import reactor.core.publisher.Flux;
|
||||
@@ -40,17 +43,20 @@ import java.util.Map;
|
||||
*/
|
||||
|
||||
@Service
|
||||
public class RegistryCenterService {
|
||||
public class RegistryCenterService implements ApplicationListener<ContextRefreshedEvent> {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(RegistryCenterService.class);
|
||||
|
||||
private Map<String, RegistryCenter> registryCenterMap = new HashMap<>();
|
||||
|
||||
@Resource
|
||||
private ReactiveWebServerApplicationContext applicationContext;
|
||||
|
||||
@Resource(name = AggregateRedisConfig.AGGREGATE_REACTIVE_REDIS_TEMPLATE)
|
||||
private ReactiveStringRedisTemplate rt;
|
||||
|
||||
@PostConstruct
|
||||
public void init() {
|
||||
@Override
|
||||
public void onApplicationEvent(ContextRefreshedEvent event) {
|
||||
Result<?> result = initRegistryCenter();
|
||||
if (result.code == Result.FAIL) {
|
||||
throw new RuntimeException(result.msg, result.t);
|
||||
@@ -76,6 +82,7 @@ public class RegistryCenterService {
|
||||
RegistryCenter rc = JacksonUtils.readValue(json, RegistryCenter.class);
|
||||
registryCenterMap.put(rc.name, rc);
|
||||
log.info("init registry center {}", rc.name);
|
||||
rc.initFizzServiceRegistration(applicationContext);
|
||||
}
|
||||
} catch (Throwable t) {
|
||||
result.code = Result.FAIL;
|
||||
@@ -123,12 +130,18 @@ public class RegistryCenterService {
|
||||
String message = msg.getMessage();
|
||||
try {
|
||||
RegistryCenter rc = JacksonUtils.readValue(message, RegistryCenter.class);
|
||||
RegistryCenter prev = null;
|
||||
if (rc.isDeleted) {
|
||||
registryCenterMap.remove(rc.name);
|
||||
prev = registryCenterMap.remove(rc.name);
|
||||
log.info("remove registry center {}", rc.name);
|
||||
prev.getFizzServiceRegistration().deregister();
|
||||
} else {
|
||||
registryCenterMap.put(rc.name, rc);
|
||||
prev = registryCenterMap.put(rc.name, rc);
|
||||
log.info("update registry center {}", rc.name);
|
||||
if (prev != null) {
|
||||
prev.getFizzServiceRegistration().deregister();
|
||||
}
|
||||
rc.initFizzServiceRegistration(applicationContext);
|
||||
}
|
||||
} catch (Throwable t) {
|
||||
log.error("update registry center error, {}", message, t);
|
||||
|
||||
@@ -54,7 +54,7 @@ public class RegistryCenterServiceTests {
|
||||
registryCenterServiceMap.put("1", "{\"id\":1,\"name\":\"default\",\"type\":1,\"format\":1,\"content\":\"" + yml + "\",\"isDeleted\":0}");
|
||||
stringRedisTemplate.opsForHash().putAll("fizz_registry", registryCenterServiceMap);
|
||||
|
||||
registryCenterService.init();
|
||||
registryCenterService.onApplicationEvent(null);
|
||||
RegistryCenter def = registryCenterService.getRegistryCenter("default");
|
||||
FizzServiceRegistration fizzServiceRegistration = def.getFizzServiceRegistration();
|
||||
fizzServiceRegistration.register();
|
||||
|
||||
Reference in New Issue
Block a user