我有以下服务:
我使用“Config First”模式。这意味着我首先启动Config Server,然后启动Discovery Service。
然后我运行事件服务。它需要从Config Server进行配置。在配置中,我指定server.port属性等于8081。
我看到我的事件服务正在发现服务中注册。
当我尝试再启动一个事件服务实例时,会出现问题。要在不同的端口上运行它,我使用-Dserver.port vm参数。所以我的命令如下:
java -jar event-service.jar -Dserver.port=8082
但是应用程序无法启动,说8081已经在使用中。似乎事件服务使用配置服务器中的配置,并且此配置优先于VM参数。但我认为它应该是副verca。
答案 0 :(得分:4)
命令行参数的顺序是错误的:system variable
必须在jarfile之前:
$ java -jar -Dserver.port=8082 event-service.jar
$ server_port=8082 java -jar event-service.jar
$ java -jar -Dserver.port=8082 event-service.jar
请注意,对于$ java -jar event-service.jar --server.port=8082
,environment variable
将替换为dots
。
来源:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
答案 1 :(得分:0)
您必须将客户端属性更改为spring.cloud.config.override-none=true
,默认设置为false。根据文件:
标记表示当
allowOverride
为真时,外部属性应采用最低优先级,而不是覆盖任何优先级 现有属性源(包括本地配置文件)。默认为false。