Eureka 实例应用程序名称不适用于 Spring Cloud Gateway

Posted

技术标签:

【中文标题】Eureka 实例应用程序名称不适用于 Spring Cloud Gateway【英文标题】:Eureka instance appname not working with Spring Cloud Gateway 【发布时间】:2021-04-09 14:03:22 【问题描述】:

似乎网关无法使用 eureka.instance.appname 解析在 eureka 服务器中注册的应用程序。在我们的案例中,我们将应用程序部署在两个不同的环境(uat 和 qa)中,但两者都将在一个集群的 eureka 服务器上注册。我们使用 eureka.instance.appname 将应用程序与两种环境区分开来。一个注册为 service_app_uat,另一个注册为 service_app_qa,但是 spring.application.name 是 service.app。 Eureka 能够从两个不同的环境中注册应用程序,但 Spring Cloud Gateway 无法从 eureka 解析这两个注册实例。但是,如果我们从两个注册为 service_app 的环境中删除了 eureka.instance.appname 这两个应用程序,并且有两个我们不想要的实例。

有没有其他方法可以在 Eureka 中使用自定义服务名称注册应用程序?

【问题讨论】:

这不是eureka的问题,但是我们如何从eureka中读取值,我们只使用应用程序名称。使用 instance.appname 将是一种增强 没错,这是 Spring Cloud Gateway eureka 实现的问题。您可以设置 eureka 实例应用名称的原因是针对我们上面的场景。一个应用程序可以有不同的部署配置文件注册到一个 Eureka 服务器。我们希望这将很快在 Spring Cloud Gateway 中实现。因此,我们在属性中做了太多不必要的冗余。 不,这是对spring cloud netflix如何实现发现客户端等的增强,而不是网关。请打开一个问题 【参考方案1】:

你不能只使用 Spring Profiles 并通过 spring.application.name 提供不同的命名吗?

【讨论】:

我们做到了,spring.application.name 与 spring 云网关完美配合。然而,就像我上面所说的,我们有这种情况,我们在两个不同的环境中部署应用程序,并且必须使用不同的服务名称进行注册。我们无法更改每个环境的 spring.application.name,因为它正在被 spring 配置服务器使用。因此,如果在 uat 中部署的 app_server(活动配置文件设置为 uat),服务器配置将检索 app_server-uat.yml 属性,同样适用于 qa 环境。 对于 eureka 注册,我们希望依靠 eureka.instance.appname 来区分两者,注册在同一个 eureka 服务器上。感谢您的回复,顺便说一句。

以上是关于Eureka 实例应用程序名称不适用于 Spring Cloud Gateway的主要内容,如果未能解决你的问题,请参考以下文章

Spring Security Logout 不适用于 Spring 4 CORS

为啥 RegisterMessageHandler 不适用于特定主题名称?

通知弹出窗口不适用于单个实例

《SpringCloud超级入门》Eureka注册中心开启密码认证《十二》

《SpringCloud超级入门》Eureka注册中心开启密码认证《十二》

AWS 实例配置文件不适用于 Spring Cloud AWS