2015-02-27 16 views
9

Planuję użyć Spring Boot do mojego zadania. Jest to typowa aplikacja serwerowa z połączeniem z bazą danych. Wiem, że mogę użyć Spring Configuration, aby uzewnętrznić moje właściwości, np. Szczegóły połączenia db. Ale mam również inne właściwości, które wymagają aktualizacji w czasie wykonywania. na przykład flippers/flagi funkcji. Niektóre funkcje mojej aplikacji muszą być kontrolowane dynamicznie, np. wyobrazić właściwość jak app.cool-feature.enable = true a następnie po pewnym czasie ta sama funkcja zostanie wyłączona przez app.cool-feature.enable = falseJak skonfigurować właściwości dynamiczne podczas korzystania z rozruchu sprężynowego?

jakieś sugestie co jest najlepsze praktyki na temat spożywania takich dynamicznych zachowań w czasie wykonywania? Mogę myśleć o następujących opcji, aby wywołać zmianę ...

  • Wyślij wiadomość JMS do instancji serwera ze zmianą powyżej własności
  • wezwać narażony końcowy API na instancji serwera np POST http://myapp/admin/config/update { "config": { "app.cool-feature.enable": true} }

wiem, że mogę napisać mój własny kod niestandardowy wdrażającego ten (to byłoby dla 3 czas), ale zastanawiam się, czy nie ma już standardowej metody/powszechnej praktyki związanej z konfiguracjami właściwości dynamicznych, o których nie wiem. Byłoby świetnie, gdyby mógł współpracować z innymi rozwiązaniami, takimi jak Apache ZooKeeper, coreos etcd, kuratorem Netflix itp. I mieć ścisłą integrację ze Spring.

Myśli?

Odpowiedz

2

Czasami warto spojrzeć na Togglz: www.togglz.org

Ze swojej strony głównej:

Togglz jest implementacja tej funkcji Przełączenie wzorzec dla Java. Przełączniki funkcji są bardzo popularnymi zwinnymi praktykami programistycznymi w kontekście ciągłego wdrażania i dostarczania. Podstawową ideą jest powiązanie przełącznika z każdą nową funkcją, nad którą pracujesz. Umożliwia to włączenie lub wyłączenie tych funkcji w środowisku wykonawczym aplikacji, nawet dla indywidualnych użytkowników.

Togglz nie jest związany ze strukturą sprężynową, ale obsługuje go.

5

Jeśli używasz Spring boot, spójrz na @ConfigurationProperties. Będziesz zobowiązany dostarczyć Fasolę, aby uzyskać dostęp do swoich nieruchomości. Dlatego oryginalne wartości właściwości można zmienić podczas wykonywania, ponieważ są one regularnymi właściwościami fasoli.

W twoim przypadku na przykład:

@Component 
@ConfigurationProperties 
public class JmsProperties { 

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

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

} 

A potem wstrzyknąć tej fasoli w ty JMS wiadomość słuchacza.

Oczywiście jeśli używasz JMS i wiosna bagażnik, z autokonfiguracji już masz klasę Properties ...

3

Twój wymóg jest dobrym use-case dla „Wiosna Chmura Config”, gdzie nie tylko można mieć wszystko konfiguracje zlokalizowane centralnie, ale mogą również odświeżać je dynamicznie, a które z kolei mogą być wybrane przez aplikację referencyjną już od pierwszej chwili.Skorzystaj ze standardowej sprężyny link dla tego samego.