4

我的 Spring Cloud Config Client 依赖于spring.cloud.starter.bus.amqp,但仍未启用/bus/refresh endpoint

build.gradle    
compile("org.springframework.cloud:spring-cloud-starter-stream-rabbit:1.1.3.RELEASE")    
compile("org.springframework.cloud:spring-cloud-starter-bus-amqp:1.2.2.RELEASE")

我的配置客户端应用程序中有这些依赖项,但仍未启用/bus/refresh, /bus/env.

请让我知道我的客户端应用程序中缺少什么。

笔记:

spring.cloud.bus.refresh.enabled: true
spring.cloud.bus.env.enabled: true
endpoints.spring.cloud.bus.refresh.enabled: true
endpoints.spring.cloud.bus.env.enabled: true

我已尝试在 , 中设置这些指标,application.ymlapplication.properties在 ,中设置这些指标BusAutoConfiguration以启用/bus/*端点。

@ConditionalOnProperty(value = "endpoints.spring.cloud.bus.refresh.enabled", matchIfMissing = true)

在我的 Spring Cloud Config Server 应用程序中,我禁用了这些端点,即设置为 false

endpoints.spring.cloud.bus.refresh.enabled: false
endpoints.spring.cloud.bus.env.enabled: false

并观察到在 Spring Boot 启动期间/bus/*没有启用端点。

4

4 回答 4

5

您是否将客户的网址映射到/bus/refresh?我相信它/refresh默认映射到。

您还可以尝试在以下位置向客户端应用发送 POST 请求:

curl -X POST http://server:port/refresh

我也相信你可能不需要spring-cloud-starter-stream-rabbit依赖,只是spring-cloud-starter-bus-amqp.

顺便说一句,我在以下位置发布了带有工作演示的详细帖子:使用 Spring Cloud Config Server、Spring Cloud Bus、RabbitMQ 和 Git 的可刷新配置,这可能会对您有所帮助。

于 2017-05-15T14:38:08.807 回答
4

用我截至 2018 年 4 月 12 日的发现更新这个问题

/actuator/bus-refresh 是从配置服务器出发的方式。

在您的 application.properties 中:

spring.cloud.bus.enabled=true
management.endpoints.web.exposure.include=bus-refresh

示例: curl -X POST http://localhost:8080/actuator/bus-refresh

通知所有注册的客户端更新他们的配置。

我发现的大多数现有文章都没有这个,但我设法找到了基于试错法和解决方案花絮的最简单的文章。

于 2018-04-12T15:53:08.597 回答
2

我遇到了完全相同的问题。我的观察如下:我纠正了这个问题,RabbitMQ/AMQP maven 依赖是我的主要问题。

我的微服务和 springCloudConfigServer 模块正在使用以下内容:2.2.4.RELEASE - Hoxton.SR1

我的 pom.xml 如下:

        <!-- Use this! I replaced this maven dep. for following one -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>

        <!-- I was using this maven dep. initially which when replaced by the above solved my issue. Avoid using this for now.
        <dependency>
            <groupId>org.springframework.amqp</groupId>
            <artifactId>spring-rabbit</artifactId>
        </dependency>
        -->

我的 application.properties/bootstrap.properties 如下:

management.endpoints.web.exposure.include=bus-refresh

这个 URL 对我有用:http://localhost:8080/actuator/bus-refresh 而不是: /bus/refresh OR /bus/env

1)您需要在微服务模块和 springCloudConfigServer 模块中都有spring-boot-starter-actuatorspring-cloud-starter-bus-amqp maven 依赖项。

2)在我的微服务模块中,当我使用spring-rabbit maven dep时。&当我尝试执行URL:/actuator/bus-refresh时,它总是失败并出现错误响应 404!由于某些原因。

3)然后,我将我的微服务 pom 文件从spring-rabbit更新为spring-cloud-starter-bus-amqp,并再次尝试相同的 URL。有效!我的推论很简单。只是因为某些原因,'spring-rabbit' 不支持/actuator/bus-refresh 。(我在做了同样的试验和错误后才知道这一点)

希望这对您有所帮助。如果没有,您也可以参考此链接此链接。

于 2020-02-24T19:29:15.777 回答
0

查看代码后,发现spring.cloud.config.bus.enabled设置为false或覆盖。

我在 Spring Boot 之上使用了企业框架 jar;这在其中具有spring.cloud.config.bus.enabled相同的值bootstrap.yml,但是被配置服务器属性文件覆盖,即 git 属性文件存储库的值为 false 并且给出了首选项。

localhost:<port>/env

应显示来自不同来源的所有属性;像配置服务器,application.yml 作为服务 jar 的一部分。从一个得到偏好的人中脱颖而出。

"configService:github uri": { list of properties }
"systemProperties": { list of properties }
"applicationConfig: [classpath:/application.properties]": { list of properties }

下面的 spring envrest 资源用于确保此属性的确切值。

localhost:<port>/env/spring.cloud.config.bus.enabled
于 2017-05-15T21:25:46.117 回答