SpringCloud设置随机端口后的问题
问题描述
SpringCloud服务提供者,设定了随机端口配置后,在EurekaServer中的注册端口、Tomcat的web端口、运行中获取到的server.port配置端口,共出现了4个不同的端口,并且服务消费者使用ribbon时不能通过服务提供者的服务名称进行调用服务
配置信息
spring:
application:
name: client-server
eureka:
client:
service-url:
defaultZone: http://peer1:8761/eureka/
server:
port: ${random.int(8801,8810)}
@RestController
@RequestMapping("/")
public class IndexController {
@Value("${server.port}")
private String port;
@RequestMapping("hello")
public JSONObject hello() {
JSONObject result = new JSONObject();
result.put("producer", port + " 正在处理");
return result;
}
}
启动EurekaServer和本服务,本服务日志显示如下
com.netflix.discovery.DiscoveryClient : DiscoveryClient_CLIENT-SERVER/DESKTOP-IND7D5U:client-server:8808: registering service...
com.netflix.discovery.DiscoveryClient : DiscoveryClient_CLIENT-SERVER/DESKTOP-IND7D5U:client-server:8808 - registration status: 204
o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8801 (http) with context path ''
.s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 8801
然后问题来了,打开EurekaServer页,可以看到client-server的注册,client-server出现了8806和8808端口,访问http://localhost:8801/hello,返回的server.port是8805


而且服务消费者用了ribbon,也不能通过"http://CLIENT-SERVER/hello"的方式进行调用,会提示异常信息 I/O error on GET request for "http://CLIENT-SERVER/hello"
结论
猜想可能是random.int的问题,网上搜了下这个问题,找到个类似的文章 springboot使用随机端口暴露的问题解决方法,里面提到并给出了自己实现random.int的方法,让随机端口只生成一次,应该可以解决问题
SpringCloud设置随机端口后的问题的更多相关文章
- spring-boot(七) 随机端口
学习文章:springboot小技巧 随机端口 为Spring Cloud的应用实用随机端口非常简单,主要有两种方法: 设置server.port=0,当应用启动的时候会自动的分配一个随机端口,但是该 ...
- socket bind 随机端口
https://www.cprogramming.com/code_blocks/ 这个地址可以下载c, c++的编译器,在windows下可以用的 IDE. bind到端口0上,系统就会自动分配,但 ...
- table表格在设置文字垂直居中后,在表格显示相同排列的数据(比如:testtesttesttsttesttesstestse很多的test)时此表格不能换行
table设置了垂直居中后在表格显示相同排列的数据(比如:testtesttesttsttesttesstestse很多的test)时此表格不能换行, 此时会导致table会把页面撑的很宽,导致表格后 ...
- C# winform解决解决窗体第一次设置为最大化后,点击最大化按钮窗体无法居中问题
public frmMain() { InitializeComponent(); //解决窗体第一次设置为最大化后,点击最大化按钮窗体无法居中问题 int x = Convert.ToInt32(( ...
- Vs2015 win10虚拟机启动问题:无法设置UDP端口 解决方法 合集(转载)
刚装的vs2015 社区版 出现这个问题,wp8.1和win10m模拟器都无法启动,找了好久找到的解决方案,放这儿供大家参考,免得大家像我一样走弯路: Windows Phone emulator n ...
- Flash设置全屏后,放到网页中显示不正常
stage.displayState = StageDisplayState.FULL_SCREEN;//全屏,注意当设置全屏后,放到网页中显示不正常
- [改善Java代码]不要随便设置随机种子
建议30: 不要随便设置随机种子 随机数在太多的地方使用了,比如加密.混淆数据等,我们使用随机数是期望获得一个唯一的.不可仿造的数字,以避免产生相同的业务数据造成混乱.在Java项目中通常是通过Mat ...
- 设置N秒后执行某个方法或函数
设置N秒后执行一个函数,最常用的是设置一个定时器,今天刚看到有这样一个函数,感觉还是比较简单实用的,就先记下来,免得忘记了. 5秒后执行pushSecondController这个函数 [self p ...
- 使用AdvancedInstaller打包web工程设置tomcat端口的方法
原文:使用AdvancedInstaller打包web工程设置tomcat端口的方法 1.首先,要把你要打包的tomcat下的server.xml文件删掉,因为tomcat自带的serv ...
- 在一个没有设置宽高的容器中,为什么设置position:absolute后就可以全屏显示了?
此场景适用于移动端百分比布局,背景全屏显示. 在一个没有设置宽高的容器中设置背景,想要背景全屏显示,设置bcakground-size:100%;后还需设置position:absolut; 原因: ...
随机推荐
- ES6-Promise下
六.实例的finally方法: promise状态发生变化指的是由初始态变成成功或者失败态 处理错误指的是没有调用catch(失败态实例调用可以执行其回调的then) finally里面的回调函数只要 ...
- appium+python测试Android真机功能报错处理
用Appium1.4.16.1测试Android8.1.0出现以下报错: C:\ProgramData\Anaconda3\python.exe D:/python/appium_learn/calc ...
- 山寨e网通公告
SHANZGONGG山寨e网通V1.0[换行]软件完全免费,官方绝不会索取任何费用,请勿被骗,后果自负.[换行]如果你有什么更好的建议或者需要哪里改进的地方,请联系作者QQ206044600反馈,前提 ...
- C# 后端实现前端的alter弹窗
前端页面定义一个button按钮 <cimesui:cimesbutton id="btnDelete" text="删除检验单" cssclass=&q ...
- The first python article
Smile is the most beautiful language! and Python so on !
- 第14周 预习、实验与作业:Java数据库编程
回想"流与文件"章节,如何将一组对象存储到文件中?主要步骤是什么. 把数据抽象为流,用字节输入输出流(InputStream,OutputStream)进行读写. 主要步骤为:创建 ...
- 修复右键批量打印PDF文件的功能
bat文件内容如下, 直接右键管理员运行即可. @echo off rem "功能描述:修复右键批量打印PDF文件的功能" rem "制作人:赵龙" rem & ...
- CSS 多栏布局 固定布局 流动布局
正常情况下都应该保持元素 height 属性的默认值 auto . 多栏布局,某一栏目占的总宽度包括它的,Width,margin,padding ,border. CSS3中,应用 box-siz ...
- vs code for macOS的安装
参考下载链接:http://www.pc6.com/mac/147684.html 汉化方法: 中文设置方法(如下图)在插件设置的搜索栏中输入"chinese",选择第一个简体中文 ...
- IPC,进程间通信
信号机制 也叫软中断,软件层次上对中断的模拟 kill -9 加进程号可以终止进程 linux下执行kill -l可以看到 这里面居然没有32 33 直接从31到34 所以一共是62个信号 1) SI ...