解决springboot服务注册到Eureka,端口总是默认8080,自己配置端口不生效问题
这段时间接手了一个公司的老项目,用的是SpringCloud
在我用的时候突然发现有一个服务,注册到Eureka后,界面显示的端口和实际Ribbon调用的实例端口是不一致的,后来我自己写了个端口获取了一下所有的实例信息,
方法如下:
@RestController
public class TestController {
@Resource
private DiscoveryClient discoveryClient;
@RequestMapping("getServicesList")
@ResponseBody
public Object getServicesList() {
List<List<ServiceInstance>> servicesList = new ArrayList<>();
//获取服务名称
List<String> serviceNames = discoveryClient.getServices();
for (String serviceName : serviceNames) {
//获取服务中的实例列表
List<ServiceInstance> serviceInstances = discoveryClient.getInstances(serviceName);
servicesList.add(serviceInstances);
}
return servicesList;
}
}
这个可以获取当前注册到Eureka的所有实例信息。
获取到以后发现端口和配置的端口不一致
[{
"host": "147.20.1.14",
"port": 8080,
"serviceId": "IICS-TIMER",
"uri": "http://147.20.1.14:8080",
"metadata": {},
"secure": false,
"instanceInfo": {
"instanceId": "147.20.1.14:8094",
"app": "IICS-TIMER",
"appGroupName": null,
"ipAddr": "147.20.1.14",
"sid": "na",
"homePageUrl": "http://147.20.1.14:8080/",
"statusPageUrl": "http://147.20.1.14:8080/info",
"healthCheckUrl": "http://147.20.1.14:8080/health",
"secureHealthCheckUrl": null,
"vipAddress": "iics-timer",
"secureVipAddress": "iics-timer",
"countryId": 1,
"dataCenterInfo": {
"@class": "com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo",
"name": "MyOwn"
},
"hostName": "147.20.1.14",
"status": "UP",
"leaseInfo": {
"renewalIntervalInSecs": 30,
"durationInSecs": 90,
"registrationTimestamp": 1678328929647,
"lastRenewalTimestamp": 1678328929647,
"evictionTimestamp": 0,
"serviceUpTimestamp": 1678328878377
},
"isCoordinatingDiscoveryServer": false,
"metadata": {},
"lastUpdatedTimestamp": 1678328929647,
"lastDirtyTimestamp": 1678328929069,
"actionType": "ADDED",
"asgName": null,
"overriddenStatus": "UNKNOWN"
}
}]通过这个可以看到实例端口和实例id是不一致的
后来通过查看源码发现了问题。

在Debug注册Eureka的时候我发现
他获取了一个nonSecurePort的端口,然后通过点击发现他是获取的当前配置的server.port端口,也就是咱们设置的端口,如果没有获取到的话就用默认的8080。

不知道因为什么原因导致的eureka读取server.port不生效
但是通过查阅资料我们可以通过强制给nonSecurePort赋值的方式绑定端口。
eureka.instance.nonSecurePort=8094
直接在配置文件里添加这个配置,配置nonSecurePort参数即可。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
举例讲解Java设计模式编程中Decorator装饰者模式的运用
这篇文章主要介绍了Java设计模式编程中Decorator装饰者模式的运用,装饰者模式就是给一个对象动态的添加新的功能,装饰者和被装饰者实现同一个接口,装饰者持有被装饰者的实例,需要的朋友可以参考下2016-05-05
Java Apollo环境搭建以及集成SpringBoot案例详解
这篇文章主要介绍了Java Apollo环境搭建以及集成SpringBoot案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下2021-08-08
解决Springboot全局异常处理与AOP日志处理中@AfterThrowing失效问题
这篇文章主要介绍了解决Springboot全局异常处理与AOP日志处理中@AfterThrowing失效问题,文中介绍了两种失效场景,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧2023-05-05


最新评论