2015-10-27 3 views
0

Я работаю над отправкой сообщений в распределенные системы. Поэтому я предпочитаю использовать Gateway. Проблема в том, что я получаю информацию о сайтах, адресах и каналах, динамически. Nservicebus проверяет ключевые слова сайта и соответствующий адрес в app.config. Но в моем приложении app.config ничего нет. Я хотел динамически изменять app.config из кода. Это правильный подход? Или есть способ сделать это.Добавить динамические адреса в шлюзе NserviceBus

Ниже приведен код.

App.config

<GatewayConfig> 
    <Sites> 
     <Site Key="RemoteSite" Address="http://localhost:25899/RemoteSite/" ChannelType="Http" /> 
    </Sites> 
    <Channels> 
     <Channel Address="http://localhost:25899/Headquarters/" ChannelType="Http" /> 
    </Channels> 
    </GatewayConfig> 

Код

  string[] siteKeys = 
      { 
       "RemoteSite" 
      }; 
      PriceUpdated priceUpdated = new PriceUpdated 
      { 
       ProductId = 2, 
       NewPrice = 100.0, 
       ValidFrom = DateTime.Today, 
      }; 
      bus.SendToSites(siteKeys, priceUpdated); 
+0

Этот вопрос крест отправил к конкретной группе Google: https://groups.google.com/forum/#!msg/particularsoftware/oCZyqdkTh14/rBict6YzCAAJ –

ответ

1

Вы можете сделать это динамически во время запуска, создав объект GatewayConfig, наследуя от IProvideConfiguration<GatewayConfig>, как показано в следующем примере.

Если есть новые записи, экземпляр шины необходимо перестроить.

public class GatewayConfigConfigurationProvider : IProvideConfiguration<GatewayConfig> 
{ 

    public GatewayConfig GetConfiguration() 
    { 
     return new GatewayConfig 
     { 
      Channels = 
      { 
       new ChannelConfig 
       { 
        Address = "http://localhost:25899/Headquarters/", 
        ChannelType = "Http" 
       } 
      }, 
      Sites = 
      { 
       new SiteConfig 
       { 
        Address = "http://localhost:25899/RemoteSite/", 
        ChannelType = "Http", 
        Key = "RemoteSite" 
       } 
      } 
     }; 
    } 
} 

Этот пример основан на следующем примере с сайта документации:

0

К сожалению, вы не можете изменить настройки app.config во время выполнения. Я считаю, что причина в том, что nservicebus потребуется выполнить некоторую инициализацию с удаленного сайта до того, как начнется конечная точка.

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

  • Нет связанных вопросов^_^