启动服务时出现端口冲突,配置服务已在运行。我目前正在使用Spring Boot 1.2.3.RELEASE和Spring Cloud版本1.0.0.RELEASE(尝试使用1.0.1.RELEASE,同样的问题)。
如果我在端口8888中启动配置服务器,然后尝试启动另一个服务,它将尝试在端口8888中启动,即使我已指定另一个端口。奇怪的是,在Mac OS中不会发生这种情况,它确实发生在Windows和Linux中。
如果我启动服务然后启动配置服务器,那么它一切正常。该服务被分配了一个不同于8888的端口和配置服务端口8888。
我尝试过不同版本的Spring Cloud和Spring Boot以及不同的配置。我在post上尝试了这些建议,但它们没有用。
关于如何解决这个问题的任何想法?
-
我设法通过从配置服务器中的server.port
移除application.yml
并将其移至bootstrap.yml
来解决端口冲突。我还从客户端服务中的server.port
移除了application.yml
,并将其移至bootstrap.yml
。下面你可以看到配置文件当前的样子。
这些是配置服务中的配置文件:
bootstrap.yml
server:
port: 8888
info:
name: "Config Service"
spring:
application:
name: config-service
profiles:
active: native
cloud:
config:
enabled: true
server:
git:
uri: <url to config repo>
application.yml
management:
context-path: /admin
info:
configuration: "Read From Config Service application.yml"
endpoints:
restart:
enabled: true
shutdown:
enabled: true
health:
sensitive: false
logging:
level:
com.netflix.discovery: 'OFF'
org.springframework.cloud: 'DEBUG'
eureka:
instance:
leaseRenewalIntervalInSeconds: 10
leaseExpirationDurationInSeconds: 5
preferIpAddress: false
statusPageUrlPath: /admin/info
healthCheckUrlPath: /admin/health
metadataMap:
hostname: ${vcap.application.application_uris[0]}
instanceId: ${vcap.application.instance_id:${spring.application.name}:${spring.application.instance_id:${random.value}}}
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://127.0.0.1:8761/eureka/
客户端服务中的配置为:
bootstrap.yml
server:
port: 0
info:
name: "Client Service"
spring:
application:
name: serviceC
profiles:
active: native
cloud:
config:
enabled: true
failFast: true
env: default
label: master
uri: http://localhost:8888
application.yml 为空。
现在我有另一个问题。在Linux中,客户端从配置服务器中的application.yml
文件(端口冲突的起源)获取配置,在Mac OS中从中获取配置配置好的git存储库。
正确的行为应该是什么?
答案 0 :(得分:0)
终于搞定了。
问题是profiles.active: native
设置。 Linux 上的配置服务正在从本地application.yml
获取配置。由于某些原因,此设置无法在 Mac OS 上运行,配置服务正在从 Repo 获取配置。
最后,我删除了profiles.active: native
设置,并将常用配置移至了Repo。现在所有服务都从git中的application.properties
获得通用配置。