Spring Cloud Port Conflict 8888

时间:2015-05-22 11:25:24

标签: java spring spring-boot spring-cloud

启动服务时出现端口冲突,配置服务已在运行。我目前正在使用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存储库。

正确的行为应该是什么?

1 个答案:

答案 0 :(得分:0)

终于搞定了。

问题是profiles.active: native设置。 Linux 上的配置服务正在从本地application.yml获取配置。由于某些原因,此设置无法在 Mac OS 上运行,配置服务正在从 Repo 获取配置。

最后,我删除了profiles.active: native设置,并将常用配置移至了Repo。现在所有服务都从git中的application.properties获得通用配置。