java – 在使用@refreshScope注释的多个实例上应用/刷新
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 在使用@refreshScope注释的多个实例上应用/刷新,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1483字,纯文字阅读大概需要3分钟。
内容图文
![java – 在使用@refreshScope注释的多个实例上应用/刷新](/upload/InfoBanner/zyjiaocheng/782/1db14603ad07474894bff70a5f1754eb.jpg)
我正在编写Spring启动应用程序,它使用弹簧配置,部署在关键的云代工厂上,并由Netflix Eureka作为发现服务器/负载均衡器公开.
我创建了一个bean如下:
@Component
@ConfigurationProperties("config")
@RefreshScope
@Data
public class GeneralProperties {
private boolean ignoreEvent;
}
在更改配置库中的实际属性后调用Eureka使用/ refresh暴露的应用程序路由时,@ refreshScope注释的值已更改(在响应状态中结束该字段存在),这意味着它正常工作.
当在云上运行同一应用程序的多个实例并调用/ refresh时,问题就开始了.
使用的路由是Eureka公开的路由,它使用负载均衡器将呼叫路由到其中一个可用实例.
这会导致意外的结果,并非所有实例都会根据属性的最新更改进行更新.
有关如何在所有实例上应用更改的任何建议吗?
解决方法:
在这种情况下,您应该使用Spring Cloud Bus.
此框架背后的想法是将所有应用程序实例绑定到消息代理(RabbitMQ或Apache Kafka)中的主题.
将以下依赖项添加到pom.xml:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-bus-parent</artifactId>
<version>1.3.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
</dependencies>
在上面的例子中,我添加了对amqp的依赖,即RabbitMQ.您还需要将应用程序绑定到RabbitMQ,在PCF中它很容易,因为它内置于平台中.
当您需要刷新时,您应该调用:
POST /bus/refresh
这将触发事件到应用程序的所有实例正在侦听的主题,因此 – 所有实例都将刷新其bean配置.
祝好运.
内容总结
以上是互联网集市为您收集整理的java – 在使用@refreshScope注释的多个实例上应用/刷新全部内容,希望文章能够帮你解决java – 在使用@refreshScope注释的多个实例上应用/刷新所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。