Spring Cloud端口号,使选择更加智能

Ran*_*ndy 1 java spring spring-boot spring-cloud spring-cloud-netflix

我正在运行带有Eureka服务器的Spring Cloud,我想让我的应用程序根据使用的端口和给定的范围选择端口。

例如,我希望我的第一个实例从端口8010开始,第二个实例从8011等开始。

在application.properties中,您可以设置一个随机端口(server.port=0),可以设置一个静态端口(server.port=8080),但是我想知道如何使spring在一个范围内设置一个随机端口,或者根据使用的端口选择一个端口。

例如,类似这样的方法将起作用:

server.port.random=8080-8090
Run Code Online (Sandbox Code Playgroud)

但这显然不存在。

我也知道可以添加一些逻辑,例如,我曾经使用过:

eureka.instance.instance-id=${spring.application.name}:${random.int}
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何使两个数字之间的随机性起作用。此外,随机变量仍有可能连续两次设置相同的端口,从而使服务器无法启动实例。

有没有一种方法可以在Spring application.properties中动态设置端口?

shi*_*njw 5

可以在给定范围内指定一个随机端口。在您的属性文件中。

server.port=${random.int[8080,8090]}

仍然有可能发生碰撞,但是如果您在该范围内有足够的填充,则可以限制这种情况的发生。

但是,更优选的方法是将端口指定为环境变量。

java -jar app.jar --SERVER_PORT=8080

java -jar app.jar --SERVER_PORT=8081