在Spring Cloud Config Client中启用/总线/刷新端点

时间:2017-05-12 21:32:49

标签: spring-cloud spring-cloud-config spring-cloud-bus

我的Spring Cloud Config客户端与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 个答案:

答案 0 :(得分:2)

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

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

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

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

BTW我在Refreshable Configuration using Spring Cloud Config Server, Spring Cloud Bus, RabbitMQ and Git发布了一篇详细的帖子,其中包含可能有助于您作为起点的工作演示。

答案 1 :(得分:1)

使用截至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

表示所有注册客户更新其配置。

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

答案 2 :(得分:1)

我面临着完全相同的问题。我的观察如下: 我已将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 / bus / env

1)您必须在两个微服务模块中均具有 spring-boot-starter-actuator spring-cloud-starter-bus-amqp Maven依赖项以及您的springCloudConfigServer模块。

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 。 (我是通过反复试验并反复了解到的)

希望这对您有所帮助。 如果没有,您可以参考this linkthis also.

答案 3 :(得分: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 env rest资源来确保此属性的确切值。

localhost:<port>/env/spring.cloud.config.bus.enabled