解决consul覆盖注册
2024-09-16 00:09:38
默认注册consul的服务id为服务名-端口号,相同的服务名和端口号注册会覆盖
解决方式:
1.自定义Consul注册Id
import com.ecwid.consul.v1.ConsulClient;
import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties;
import org.springframework.cloud.consul.discovery.HeartbeatProperties;
import org.springframework.cloud.consul.discovery.TtlScheduler;
import org.springframework.cloud.consul.serviceregistry.ConsulRegistration;
import org.springframework.cloud.consul.serviceregistry.ConsulServiceRegistry;
/**
* @describe: 自定义consul注册id
* @author: zhuCw
* @date: 2019/4/25 17:57
*/
public class RpsConsulServiceRegistry extends ConsulServiceRegistry {
public RpsConsulServiceRegistry(
ConsulClient client,
ConsulDiscoveryProperties properties,
TtlScheduler ttlScheduler,
HeartbeatProperties heartbeatProperties) {
super(client, properties, ttlScheduler, heartbeatProperties);
}
@Override
public void register(ConsulRegistration reg) {
// 重新设计id,此处用的是名字也可以用其他方式例如instanceid、host、uri等
reg.getService()
.setId(
reg.getService().getName() + "-" + reg.getService().getAddress() + "-" + reg.getPort());
super.register(reg);
}
}
2. 放入容器
import com.ecwid.consul.v1.ConsulClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.consul.discovery.ConsulDiscoveryProperties;
import org.springframework.cloud.consul.discovery.HeartbeatProperties;
import org.springframework.cloud.consul.discovery.TtlScheduler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @describe: TODO
* @author: zhuCw
* @date: 2019/4/25 17:57
*/
@Configuration
public class RpsConsulServiceRegistryConfig {
@Autowired(required = false)
private TtlScheduler ttlScheduler;
@Bean
public RpsConsulServiceRegistry consulServiceRegistry(
ConsulClient consulClient,
ConsulDiscoveryProperties properties,
HeartbeatProperties heartbeatProperties) {
return new RpsConsulServiceRegistry(
consulClient, properties, ttlScheduler, heartbeatProperties);
}
}
最新文章
- C++的性能C#的产能?! - .Net Native 系列四:性能测试方法(PerfView)
- 【转】jquery 中scrollTop在Firefox下不起作用
- Java内存模型与垃圾回收
- 使用dnspod进行简单的HTTP dns解析(防劫持)
- BigPipe 了解
- mysql describe
- 设计模式之工厂方法模式VS简单工厂方法模式
- hdu4436-str2int(后缀数组 or 后缀自动机)
- 40个Java集合面试问题和答案
- SVN中trunk,branches,tags用法详解
- String源码学习
- sizeof()的用法
- Ubuntu下使用vpn连接远程服务器
- Velocity.js的使用
- NDK Jni 开发(1)
- 第1次作业:no blog no fun
- Oracle expdp数据泵导出,并在文件上附加上日期格式
- centos mysql 修改mysql用户密码
- RestExpress response中addHeader 导致stackOverflow
- 1,rocketmq 的原理与安装教程