我想在给定范围(5001-5100)内的随机端口上启动Spring Cloud应用程序(Spring Boot 1.5.14,Spring Cloud Edgware.SR4)。我知道我们可以使用server.port=0
在Spring Boot应用程序中指定随机端口,但是我面临着以下两个问题:
server.port=0
时,Eureka注册表显示端口为0,Spring Cloud是否支持动态端口?答案 0 :(得分:1)
Spring提供了实用程序类来扫描可用的TCP端口,因此我使用以下方法来设置随机服务器端口。
[
{
"Id" : 2010,
"TotalValue" : 100.91478,
"IndexValue" : 100.75859,
"Date" : "7\/9\/2018 12:00:00 AM",
"Compare" : "ABC"
},
{
"Id" : 2010,
"TotalValue" : 99.914788865745123,
"IndexValue" : 100.86935289185379,
"Date" : "7\/10\/2018 12:00:00 AM",
"Compare" : "ABC"
}
]
现在可以在启动Spring上下文之前在Spring Boot Application的主类中调用此方法,如下所示:
public static void setRandomPort(int minPort, int maxPort) {
try {
String userDefinedPort = System.getProperty("server.port", System.getenv("SERVER_PORT"));
if (StringUtils.isEmpty(userDefinedPort)) {
int port = SocketUtils.findAvailableTcpPort(minPort, maxPort);
System.setProperty("server.port", String.valueOf(port));
log.info("Server port set to {}.", port);
}
} catch (IllegalStateException var4) {
log.warn("No port available in range 5000-5100. Default embedded server configuration will be used.");
}
}
现在,这种随机端口配置在Spring Cloud环境中可以正常工作。