Spring云端口冲突8888

Spring Cloud Port Conflict 8888

我在启动服务时出现端口冲突,配置服务已经是运行。我目前正在使用 Spring Boot 1.2.3.RELEASE 和 Spring 云版本 1.0.0.RELEASE(尝试使用 1.0.1.RELEASE,同样的问题)。

如果我在端口 8888 中启动配置服务器,然后尝试启动另一个服务,即使我指定了另一个端口,它也会尝试在端口 8888 中启动。奇怪的是,这不会发生在 Mac OS 中,它确实发生在 Windows 和 Linux.

如果我先启动服务,然后再启动配置服务器,一切都会正常进行。该服务分配的端口与 8888 和配置服务端口 8888 不同。

我尝试了不同版本的 Spring Cloud 和 Spring Boot 以及不同的配置。我尝试了 post 上的建议,但没有用。

关于如何解决这个问题有什么想法吗?

--

我设法通过从 Config Server 中的 application.yml 中删除 server.port 并将其移动到 bootstrap.yml 来解决端口冲突].我还从 Client Service 中的 application.yml 中删除了 server.port,并将其移至 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 中,Client 正在从 Config Server 中的 application.yml 文件获取配置(端口的来源冲突)并在 Mac OS 中它从配置的 git 存储库中获取它。

正确的行为应该是什么?

终于成功了。

问题出在 profiles.active: native 设置上。 Linux 上的 配置服务 正在从本地 application.yml 获取配置。由于某种原因,此设置在 Mac OS 上不起作用,并且配置服务正在从 Repo 获取配置.

最后我删除了 profiles.active: native 设置并将公共配置移动到 Repo。现在所有服务都从 git 中的 application.properties 获取通用配置。