方案1
package cn.com.xuxiaowei;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.discovery.EnableDiscoveryClientImportSelector;
import org.springframework.context.annotation.Configuration;
/**
* 永久禁用自动注册:注册中心看不到启动的项目
*
* @author xuxiaowei
* @since 0.0.1
* @see <a href=
* "https://docs.spring.io/spring-cloud-commons/reference/spring-cloud-commons/common-abstractions.html#serviceregistry-auto-registration">ServiceRegistry
* Auto-Registration</a>
* @see EnableDiscoveryClientImportSelector 注解 {@link EnableDiscoveryClient} 的
* {@link EnableDiscoveryClient#autoRegister()} 属性实现原理
*/
@Configuration
@EnableDiscoveryClient(autoRegister = false)
public class DisableRegistrationConfig {
}
方案2
spring:
cloud:
service-registry:
auto-registration:
# 永久禁用自动注册:注册中心看不到启动的项目
# https://docs.spring.io/spring-cloud-commons/reference/spring-cloud-commons/common-abstractions.html#serviceregistry-auto-registration
enabled: false
方案3
package cn.com.xuxiaowei;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.cloud.client.serviceregistry.Registration;
import org.springframework.cloud.client.serviceregistry.ServiceRegistry;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Configuration;
import org.springframework.lang.NonNull;
/**
* 启动项目注册成功后,自动下线:注册中心能看到项目并且已下线
*
* @author xuxiaowei
* @since 0.0.1
* @see com.alibaba.nacos.api.config.ConfigService
*/
@Slf4j
@Configuration
public class RegisterAutoDownConfig implements ApplicationListener<ApplicationReadyEvent> {
private static final String UP = "UP";
private static final String DOWN = "DOWN";
private Registration registration;
private ServiceRegistry<Registration> serviceRegistry;
@Autowired
public void setRegistration(Registration registration) {
this.registration = registration;
}
@Autowired
public void setServiceRegistry(ServiceRegistry<Registration> serviceRegistry) {
this.serviceRegistry = serviceRegistry;
}
@Override
public void onApplicationEvent(@NonNull ApplicationReadyEvent event) {
String status = serviceRegistry.getStatus(registration);
if (!StringUtils.hasText(status)) {
log.info("当前服务未知状态:{}", status);
}
else if (UP.equals(status)) {
log.info("当前服务已上线");
}
try {
serviceRegistry.setStatus(registration, DOWN);
log.info("当前服务下线成功");
}
catch (Exception e) {
log.error("当前服务下线失败", e);
}
}
}