
com.baidu.formula.discovery.serviceregistry.FormulaAutoServiceRegistration Maven / Gradle / Ivy
package com.baidu.formula.discovery.serviceregistry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration;
import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationProperties;
import org.springframework.retry.annotation.Retryable;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import com.baidu.formula.discovery.autoconfigure.FormulaDiscoveryProperties;
/**
* @author Bowu Dong ([email protected])
*/
public class FormulaAutoServiceRegistration extends AbstractAutoServiceRegistration {
private static final Logger logger = LoggerFactory.getLogger(FormulaAutoServiceRegistration.class);
private FormulaDiscoveryProperties properties;
private FormulaAutoRegistration registration;
public FormulaAutoServiceRegistration(
FormulaServiceRegistry serviceRegistry,
AutoServiceRegistrationProperties autoServiceRegistrationProperties,
FormulaDiscoveryProperties properties, FormulaAutoRegistration registration) {
super(serviceRegistry, autoServiceRegistrationProperties);
this.properties = properties;
this.registration = registration;
}
@Override
protected Object getConfiguration() {
return properties;
}
@Override
protected void deregister() {
if (!properties.isRegister() || !properties.isDeregister()) {
return;
}
super.deregister();
}
@Override
protected boolean isEnabled() {
return properties.getLifecycle().isEnabled();
}
@Override
protected FormulaRegistration getRegistration() {
if (registration.getInstance().getPort() == null && this.getPort().get() > 0) {
registration.initializePort(getPort().get());
}
Assert.notNull(registration.getInstance().getPort(), "service.port has not been set");
return registration;
}
@Override
protected FormulaRegistration getManagementRegistration() {
return registration.managementRegistration();
}
@Override
protected void deregisterManagement() {
if (!properties.isRegister() || !properties.isDeregister()) {
return;
}
super.deregisterManagement();
}
@Override
@Retryable(interceptor = "formulaDiscoveryRetryInterceptor")
public void start() {
super.start();
}
@Override
protected void register() {
if (!properties.isRegister()) {
logger.debug("Registration disabled.");
return;
}
super.register();
}
@Override
protected void registerManagement() {
if (!properties.isRegister()) {
return;
}
super.registerManagement();
}
@Override
protected String getAppName() {
String appName = properties.getApp();
if (StringUtils.hasText(appName)) {
return appName;
}
appName = super.getAppName();
if (StringUtils.hasText(appName)) {
return appName;
}
return getEnvironment().getProperty("spring.cloud.config.name");
}
@Override
protected boolean shouldRegisterManagement() {
if (isCloudBms()) {
// 云上暂不支持注册管理服务
return false;
}
return super.shouldRegisterManagement();
}
private boolean isCloudBms() {
String passType = System.getenv("EM_PAAS_TYPE");
if (passType != null) {
if ("CCE".equalsIgnoreCase(passType) || "BCC".equalsIgnoreCase(passType)) {
return true;
}
}
return false;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy