Сервер Spring Cloud Config не выбирает изменения - PullRequest
1 голос
/ 12 июля 2020

Я пытаюсь настроить облако конфигурации Spring, используя локальную файловую систему.

Ниже моя конфигурация на облачном сервере.

server.port=8888
spring.profiles.active=native
spring.cloud.config.server.native.searchLocations=classpath:/

Bootstrap .properties в клиентском приложении, как показано ниже

spring.application.name=hello-world
spring.cloud.config.uri=http://localhost:8888
management.endpoints.web.exposure.include=*

Я также создал hello-world.yml в пути к классу для приложения загрузки hello-world со свойством test: Hello World

Следующие шаги ниже, чтобы использовать config server.

  • Шаг 1. Обновите файл конфигурации и запустите облачный сервер конфигурации. Возможность просмотра конфигурации http://localhost:8888/hello-world/default

  • Шаг 2: Запустите клиентское приложение hello-world, клиентское приложение может читать файл свойств test с облачного сервера конфигурации.

  • Шаг 3: Внесите изменения в конфигурацию, обновив test: Good Bye на hello-world.yaml.

    В этот момент, если я проверю http://localhost:8888/hello-world/default, оно все равно будет показывать старое значение.

  • Шаг 4: Запустите /actuator/refresh в клиентском приложении. Но он не обнаружит никаких изменений на сервере конфигурации.

Новые изменения отражаются только в том случае, если я перезапускаю сервер облачной конфигурации. Есть ли проблема конфигурации, из-за которой сервер облачной конфигурации не может прослушивать изменения?

Я мог видеть o.s.cloud.commons.util.InetUtils : Cannot determine local hostname журнал INFO в приложении облачной конфигурации.

1 Ответ

0 голосов
/ 02 сентября 2020

Прежде всего, я выполнил те же самые шаги, что и вы, и получил ту же проблему, после почти дня поиска и изучения вопроса обнаружил следующее:

  1. мы не должны использовать classpath:/<whatever> вместо spring.cloud.config.server.native.searchLocations, потому что, когда мы используем это, строим проект и запускаем, местоположение относится к каталогу внутри сгенерированного файла .jar, поэтому мы не сможем обновить его во время выполнения.

Чтобы подтвердить это, вы можете остановить сервер конфигурации, открыть архив .jar и удалить файл hello-world.yml, затем попробовать http://localhost:8888/hello-world/default, вы получите нулевые ответы по умолчанию

Таким образом, мы должны использовать некоторые другие местоположения для spring.cloud.config.server.native.searchLocations либо с полным путем к каталогу, либо просто с каталогом из местоположения, в котором запущено приложение

Примеры

  1. Для полный путь в windows используйте file: /// полный путь spring.cloud.config.server.native.searchLocations: file:///E:\configs

  2. Только для каталога (который будет искать каталог проекта root, если вы работаете из IDE, если запустите jar, затем целевой каталог или местоположение jar spring.cloud.config.server.native.searchLocations: configs spring.cloud.config.server.native.searchLocations: configs\whatever

  3. , мы также можем настроить несколько местоположений следующим образом: spring.cloud.config.server.native.searchLocations: file:///E:\configs, configs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...