2

我有一个通过卡夫卡的弹簧云总线配置的弹簧云配置服务器。我正在使用带有引导 1.5.9 的 Edgware.RELEASE。当我通过 POSTMAN 在正文中向端点 /bus/refresh 发送一个带有destination=clientId:dev:** 的POST 请求到配置服务器时,所有客户端都会刷新它们的bean,即使它们的clientId 与目的地字段。

以下是其他配置详细信息:

春天云配置服务器

pom.xml

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-config-server</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-config-monitor</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-bus-kafka</artifactId>
    </dependency>

应用程序属性

server.port=8888
management.security.enabled=false
spring.cloud.bus.enabled=true
spring.kafka.bootstrap-servers=localhost:9092

我有两个 ID 为 config-client1 和 config-client2 的配置客户端

在为 config-client2 更改存储库中的应用程序属性后,我向配置服务器上的 /bus/refresh 端点提交了一个 POST 请求,请求正文中包含 destination=config-client2:dev:**。我希望这只会在 config-client2 应用程序中刷新/重新初始化 bean。但我注意到配置客户端应用程序中的 bean 也被刷新/重新初始化。我还注意到 config-client 应用程序与 config-client2 一起接收刷新事件。

我希望只有 config-client2 应用程序接收到该事件,并且它的 bean 是唯一因此而被刷新的。

想知道我是否缺少任何配置设置以在特定客户端级别启用精细刷新。

我确实浏览了发布在 - http://cloud.spring.io/spring-cloud-static/Edgware.RELEASE/single/spring-cloud.html的文档,但结果与解释不符。

感谢您对工作示例的任何帮助。

4

1 回答 1

0

您可以使用:

curl -X POST http://localhost:8001/actuator/bus-refresh/config-client2

您还需要在 application.properties 或 .yml 中使用它。

spring.cloud.config.uri= http://localhost:8001

spring.cloud.config.uri 应该指向你的 Spring Config Server

于 2019-11-22T08:22:38.817 回答