跨多个服务器更新Spring Bean属性

时间:2015-10-19 18:55:57

标签: java spring-boot spring-cloud

以下是我的方案:我有一个名为 APIBean Spring Bean ,它充当远程REST服务的API客户端。此Bean包含一个名为 hostName 的属性,它是远程服务器的IP地址。当 APIBean 客户端进行REST调用时,它将充当基本URI。此 hostName 属性的初始值是从 application.properties 中提取的。

我遇到的挑战是 hostName 属性可能会发生变化。我有一个Web表单,用户将在其地址更改时更新 hostName 属性。这在单实例环境中非常简单,但我的应用程序在AWS中分布,并在Elastic Load Balancer后面。

那么我应该如何将此更改应用于此 Spring Boot 应用程序的所有其他实例?

我查看了将{strong> application.properties 外部化到集中式Git存储库的Spring Cloud Config。它甚至包括一个/刷新端点,您可以使用POST请求来更新使用 RefreshScope 注释的Bean。但是此端点仅刷新您正在访问的单个实例。它不会影响任何其他分布式实例。

这些框架很棒,我觉得解决方案很接近,但我需要在最后一英里做一点帮助。这必须是分布式应用程序的常见开发问题。我们如何跨多个服务器更新 Spring Bean 属性?

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找Spring Cloud Bus:https://github.com/spring-cloud/spring-cloud-bus