2016-05-24 5 views
1

Я разрабатываю службу RESTful с Dropwizard. Теперь мне нужно развернуть его в другую среду (test, staging, prod) & центров обработки данных (cn, us и т. Д.). Таким образом, для другой среды/центра обработки данных требуется другая конфигурация.Dropwizard config override

Любопытно, как это обычно обрабатывается? Я мог бы иметь одну конфигурацию для каждого env/dc, но в этом случае у них будет много дублирования общей конфигурации.

Я ожидал, что у меня есть базовый конфиг, скажем base.yaml, содержащий общие конфиги; И тогда каждая среда & DC будет иметь одну конфигурацию, которая расширяет/отменяет базовый yaml с их настраиваемой конфигурацией. Возможно ли это в Dropwizard?

Спасибо!

+0

Dropwizard сосет, используйте Spring Boot, вы можете делать все, что хотите больше ... – Ulises

ответ

1

Я не думаю, что DropWizard имеет эту функцию, но вы всегда можете написать небольшой скрипт, который состоит из нескольких файлов YAML и запускает DropWizard с результатом. Вы можете использовать простой механизм шаблонов, например, Mustache.

config-template.yml:

# ... 
server: 
    applicationConnectors: 
    - type: http 
     port: {{PORT}} 

config-parms-us.yml:

--- 
PORT: "8080" 
--- 

И затем использовать:

mustache config-parms-us.yml config-template.yml > config.yml 
java ... server config.yml 
0

Я думаю, что это то, что вы ищете: https://github.com/constretto/constretto-dropwizard

Это позволяет иметь среды конкретной конфигурации, как это:

database: # the JDBC URL 
    url: jdbc:oracle:thin:@//oracle-testing:1521/name 
    .staging.url: jdbc:oracle:thin:@//oracle-staging:1521/name 
    .production.url: jdbc:oracle:thin:@//oracle-production:1521/name 

Если вы хотите, чтобы запустить приложение с определенным использованием среды:

-DCONSTRETTO_TAGS=$ENVIRONMENT

0

Вы можете создать свой собственный конфигурационный пакет, который реализует Bundle, чтобы добавить свои собственные настройки конфигурации.

Поэтому вам также необходимо создать свой собственный ConfigurationSourceProvider, а затем переопределить метод open(String path), поэтому здесь вы можете найти свое базовое имя конфигурации.

Наконец, вы можете реализовать EnvironmentAware, который поможет вам решить все ваши конфигурационные файлы, которые являются списком url. И вы можете установить свое имя по умолчанию, которое хотите загрузить.

Смежные вопросы