Несколько файлов конфигурации для nServiceBus - один и тот же каталог - PullRequest
1 голос
/ 05 сентября 2011

Я пытаюсь найти способ поддержки нескольких конфигураций для nServiceBus из одного и того же установочного каталога (но работающего как отдельные процессы). Как люди делают это в данный момент?

Я знаю, что:

  • вы можете программно изменять параметры, используя
NServiceBus.Configure
  .With()
  ...
  .MsmqTransport()
  .Configurer.ConfigureComponent<MsmqTransport>
    (NServiceBus.ObjectBuilder.ComponentCallModelEnum.None)
       .ConfigureProperty(x => x.InputQueue, "DynamicInputQueue1")
       .ConfigureProperty(x => x.ErrorQueue, "DynamicErrorQueue1");
  • и вы можете установить несколько «экземпляров» службы, используя:

NServiceBus.Host.exe / install / serviceName: xyz / instance: abc

но я хотел бы объединить два, чтобы имя экземпляра влияло на то, какой маршрут конфигурации мы выберем. Итак, я думаю, что это сводится к этому - как я могу получить имя экземпляра? Или есть альтернативные маршруты, которые я мог бы выбрать для этого, не прибегая к нескольким отдельным установочным каталогам и app.configs для экземпляра?

Спасибо

1 Ответ

1 голос
/ 06 сентября 2011

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

Возможно, вы захотите реализовать собственный профиль. Имя профиля указывается в командной строке и позволяет настраивать параметры на основе профиля. OOTB NSB имеет 3 профиля: Lite, Integration и Production, которые меняют настройки в зависимости от среды. Вы можете создать свои собственные и предоставить различные настройки, используя профиль. Просто внедрите IProfile, а затем введите его в командной строке.

Другим вариантом может быть реализация IConfigurationSource и получение данных, где бы вы ни решили. Это может быть несколько файлов, база данных или что-то еще.

Наконец, вы можете поместить свою конфигурацию в разные сборки и использовать контейнер NSB, чтобы загрузить соответствующую конфигурацию в свой загрузочный код, указанный выше, используя .With (ваш список сборок здесь включает в себя правильную сборку конфигурации). Вероятно, это можно сделать с помощью IWantToRunAtStartup, но убедитесь, что вы настраиваете конфигурацию в нужной точке жизненного цикла службы.

...