是否可以使用 eureka 服务名称配置 spring config 客户端 uri?

问题描述 投票:0回答:1

我的项目有以下组件:

  1. 尤里卡服务器(这里是存储库)
  2. 配置服务器(此处为存储库)
  3. 产品服务(此处存储库)
  4. 带有配置文件的 Github 存储库(这里是存储库)

想法是product-service组件会在启动时注册到eureka server上,它会找到config server的ip地址在哪里,然后从git下载product-service.properties。错误启动示例这里.

下面的 Github 链接显示了所有配置,但有一个摘要

Eureka 服务器属性

server.port=8761
  
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

logging.level.com.netflix.eureka=OFF
logging.level.com.netflix.discovery=OFF

配置服务器属性

#Application
spring.application.name=configservice
server.port=8888

#Eureka client
eureka.client.service-url.default-zone=http://localhost:8761/eureka
#Disable DNS
eureka.instance.prefer-ip-address=true

#Configuration server
spring.cloud.config.server.git.uri=https://github.com/SoftwarDevelop3r/Config-repository-v1

产品服务微服务

spring.cloud.name=product-service
spring.cloud.config.enabled=true
spring.cloud.profile=development
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.service-id=configservice

但是如果我在 eureka 上注册产品服务组件并配置为直接从 configserver 获取 product-service-development.properties 而不使用 eureka 服务器,它会正确运行。

spring.application.name=product-service
spring.config.import=configserver:http://localhost:8888
spring.profiles.include=development
eureka.instance.prefer-ip-address=true 
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/

无错误启动示例这里.

我无法找到一些配置,以便我的产品服务下载 product-service.properties 询问 eureka 服务器配置文件在哪里。配置可访问并且配置服务器已在尤里卡服务器中注册:

curl http://localhost:8888/product-service/development/

{"name":"product-service","profiles":["development"],"label":null,"version":"7dc446ca4d1d1bb2b024179b240b760018862f4c","state":null,"propertySources":[{"name":"https://github.com/SoftwarDevelop3r/Config-repository-v1/product-service-development.properties","source":{"server.port":"8081","spring.datasource.url":"jdbc:h2:mem:testdb","spring.datasource.driverClassName":"org.h2.Driver","spring.datasource.username":"sa","spring.datasource.password":"password","spring.jpa.defer-datasource-initialization":"true","spring.jpa.database-platform":"org.hibernate.dialect.H2Dialect","spring.h2.console.enabled":"true","spring.h2.console.path":"/h2-console","spring.h2.console.settings.trace":"false","spring.h2.console.settings.web-allow-others":"false","spring.application.name":"PRODUCT-SERVICE","eureka.client.service-url.default-zone":"http://localhost:8761/eureka","eureka.instance.prefer-ip-address":"true","management.endpoints.web.exposure.include":"*","management.info.env.enabled":"true","info.app.name":"PRODUCT-SERVICE","info.app.version":"1.0.0","info.app.description":"Microservice which allow us to manage products","info.author":""}},{"name":"https://github.com/SoftwarDevelop3r/Config-repository-v1/application.properties","source":{"sample.property":"sample"}}]}

可能是 spring 客户端配置无法使用在 eureka 服务器上查找来下载配置属性,这是 spring 云服务器的 ip 地址?阅读 Spring docs 似乎是可能的,但我无法通过互联网配置或找到一些类似的配置。

提前致谢,

问候

spring spring-boot spring-cloud netflix-eureka
1个回答
0
投票

已解决。

事实上,products-service的application.properties是不正确的。这里正确配置:

spring.cloud.config.discovery.enabled=true
spring.cloud.config.fail-fast=true

spring.cloud.config.name=product-service
spring.cloud.config.discovery.service-id=configservice
spring.cloud.config.profile=development
© www.soinside.com 2019 - 2024. All rights reserved.