Включение / шина / обновление конечной точки в Spring Cloud Config Client
Мой клиент 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.yml
или же application.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/*
конечные точки не включены.
5 ответов
Вы связали URL клиента с /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, которые могут помочь вам в качестве отправной точки.
Обновление этого вопроса с моими выводами на 2018/04/12
/ actator/bus-refresh - это путь с сервера конфигурации.
В вашем приложении. Свойства:
spring.cloud.bus.enabled=true
management.endpoints.web.exposure.include=bus-refresh
Пример: curl -X POST http://localhost:8080/actuator/bus-refresh
Дает сигнал всем зарегистрированным клиентам обновить их конфиги.
Большинство существующих статей, которые я нашел, не имеют этого, но мне удалось найти самую простую, основанную на методе проб и ошибок, и здесь есть лакомые кусочки решений.
Я столкнулся с той же проблемой. Мои наблюдения заключаются в следующем: я исправил это, зависимость от 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) У вас должны быть зависимости maven spring-boot-starter-actator и spring-cloud-starter-bus-amqp как в модуле микросервисов, так и в вашем модуле springCloudConfigServer.
2) В моем модуле микросервисов, когда я использовал spring-rabbit maven dep. & когда я пытался выполнить URL: /actator / bus-refresh, он всегда выходил с ошибкой 404! по какой-то причине.
3) Затем я обновил свой pom-файл микросервиса с spring-rabbit до spring-cloud-starter-bus-amqp и снова попробовал тот же URL. Это сработало! Мои выводы были простыми. Просто "пружинный кролик" по какой-то причине точно не поддерживал / активатор / обновление шины. (Я узнал это после проб и ошибок)
Надеюсь, это тебе поможет. Если это не так, вы можете сослаться на эту ссылку и это тоже.
После просмотра кода выяснилось, что spring.cloud.config.bus.enabled
имеет значение false или переопределено.
Я использовал фреймворк Enterprise Framework в верхней части Spring Boot; который имел 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 }
Ниже весны env
Ресурс rest используется для обеспечения точного значения этого свойства.
localhost:<port>/env/spring.cloud.config.bus.enabled
У меня YAML, но я пишу вам представление .properties. после добавления опций ниже с пустымPOST
для настройки порта сервера у меня работал http://ourserver:1234/actuator/refresh
management.enpoints.web.exposure.include: info, health, refresh, bush-refresh
spring.cloud.config.sever.bus.enabled: true