Как настроить динамические свойства при использовании весенней загрузки?

Я планирую использовать Spring Boot для своего задания. Это типичное серверное приложение с подключением к базе данных. Я знаю, что могу использовать Spring Configuration для экстернализации моих свойств, например подробности подключения к базе данных. Но у меня также есть другие динамические свойства, которые нужно обновлять во время выполнения. например ласты / флажки. Некоторыми функциями моего приложения нужно управлять динамически, например. представьте себе такое свойство, как app.cool-feature.enable = true, а затем через некоторое время эта же функция будет отключена с помощью app.cool-feature.enable = false

Любые предложения, как лучше всего использовать такое динамическое поведение во время выполнения? Я могу придумать следующие варианты, чтобы вызвать изменение ...

  • Отправить JMS-сообщение экземпляру сервера с указанным выше изменением свойства
  • Вызвать открытую конечную точку API на экземпляре сервера, например. POST http://myapp/admin/config/update {"config": {"app.cool- feature.enable ": true}}"

Я знаю, что могу написать свой собственный код, реализующий это (это будет в третий раз), но мне просто интересно, существует ли уже стандартный способ / обычная практика в отношении конфигураций динамических свойств, о которых я не знаю. Также было бы здорово, если бы он мог работать с другими решениями, такими как Apache ZooKeeper, coreos etcd, куратором Netflix и т. Д., И иметь тесную интеграцию со Spring.

Мысли?


person eton dolittle    schedule 27.02.2015    source источник


Ответы (3)


Если вы используете Spring boot, обратите внимание на @ConfigurationProperties. Вам потребуется предоставить Bean-компонент для доступа к своим свойствам. Следовательно, исходные значения свойств могут быть изменены во время выполнения, поскольку они являются обычными свойствами bean-компонента.

В вашем случае например:

@Component
@ConfigurationProperties
public class JmsProperties {

    private String url = "vm://localhost" (let's suppose you use ActiveMQ);

    public String getUrl()...
    public void setUrl(String value)...

}

А затем введите этот bean-компонент в слушателя сообщений JMS.

Конечно, если вы используете JMS и Spring boot, с автоконфигурацией у вас уже есть класс Properties ...

person Vince108    schedule 09.09.2015

Ваше требование является хорошим вариантом использования Spring Cloud Config, где вы можете не только централизованно размещать все свои конфигурации, но также можете обновлять их динамически, которые, в свою очередь, могут быть выбраны вашим приложением для ссылок с самого следующего момента. Обратитесь к этой стандартной весенней ссылке, чтобы получить то же самое.

person Avis    schedule 24.09.2015

Возможно, вы захотите взглянуть на Togglz: www.togglz.org

Со своей домашней страницы:

Togglz - это реализация паттерна Feature Toggles для Java. Переключение функций - очень распространенная практика гибкой разработки в контексте непрерывного развертывания и доставки. Основная идея - связать переключатель с каждой новой функцией, над которой вы работаете. Это позволяет включать или отключать эти функции во время выполнения приложения даже для отдельных пользователей.

Togglz не привязан к Spring framework, но поддерживает его.

person Thomas Traude    schedule 27.02.2015