spring-boot - 如何更新多个spring config实例客户端

标签 spring-boot spring-cloud

Spring 云配置客户端有助于在运行时更改属性。以下是 2 种方法来做到这一点

  • 更新 GIT 存储库并在客户端应用程序中点击/refresh 以获取最新值
  • 通过将更新发布到/env 然后/refresh
  • 直接更新客户端

    这两种方法的问题是,可能有多个客户端应用程序实例在云代工厂中运行,并且以上的其余调用将到达任何一个实例,从而使应用程序处于不一致的状态

    例如。对/env 的 POST 可能会命中实例 1,并为实例 2 留下旧数据。

    我能想到的一种解决方案是使用 for 循环连续“n”次到达这些端点,以确保所有实例都将被更新,但这是一个粗略的解决方案。有没有机构对此有更好的解决方案?

    注意:我们在私有(private) PCF 环境中部署我们的应用程序。

    最佳答案

    该问题的典型解决方案是 Spring Cloud Bus。如果您的应用程序绑定(bind)到 RabbitMQ 服务并且它们在类路径上有总线,那么将有额外的端点/bus/env 和/bus/refresh 将消息广播到所有实例。有关更多详细信息,请参阅文档。

    关于spring-boot - 如何更新多个spring config实例客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29744971/

    相关文章:

    java - 带接口(interface)的 Spring 目录结构(最佳实践)

    java - 并发请求事务以防止不必要的持久化

    java - 使用 Spring Boot 资源目录中的系统属性设置 keystore 文件位置

    spring-boot - 使用 Eureka 服务器时出现 "Whitelabel Error Page"

    java - 使用本地属性覆盖远程 Spring Cloud 属性

    spring - Spring Boot JAX-RS/CXF依赖项注入(inject)可在JAR中工作,但不能在WAR中工作

    spring-boot - @EnableMongoAuditing 和@CreatedDate 审计在 Spring Boot 2.4.3 中不起作用

    java - 假注册 - Spring Cloud - 无需功能区覆盖即可更改目标

    java - Eureka服务器未注册服务应用

    java - Spring Cloud Config 和静态内容