2013-10-02 4 views
1

Я использую NServiceBus 4.0.3 с конструктором Ninject и не могу понять, как регистрировать мутаторы сообщений (IMutateTransportMessages).Как регистрировать мутаторы сообщений в веб-приложении

Я зарегистрировал мутатор с Ninject Kernel, но он никогда не вызывается. Ниже, как я настройка NServiceBus:

private static IBus ConfigureBus(IKernel kernel) 
{ 
    kernel.Bind<IMutateTransportMessages>().To<SendTenantIdMutator>(); 

    return NServiceBus.Configure.With() 
     .NinjectBuilder(kernel) 
     .XmlSerializer() 
     .MsmqTransport() 
      .IsTransactional(false) 
      .PurgeOnStartup(true) 
     .UnicastBus() 
      .LoadMessageHandlers() 
     .CreateBus() 
     .Start(() => Configure.Instance.ForInstallationOn<Windows>().Install()); 
} 
+0

Есть ли какая-то особая причина для регистрации мутатора напрямую с помощью Ninject в отличие от обычного API контейнера NServiceBus: Configure.Instance.Configurer.ConfigureComponent (DependencyLifecycle.SingleInstance); –

+0

Не могли бы вы рассказать мне версию NSB, которую вы используете? Там, где некоторые внутренние изменения в последней версии, которые мешают контейнеру. Это помогает мне дать достойный ответ. –

+0

@UdiDahan API контейнера по-прежнему использует Ninject внутри? –

ответ

2

Есть ли какая-то особая причина, чтобы зарегистрировать мутатор непосредственно Ninject, в отличие от обычной NServiceBus контейнера API:

Configure.Component<SendTenantIdMutator>(Dependency‌​Lifecycle.SingleInstance);

Я имею в виду, это просто вызывает внутренне в сконфигурированный контейнер, который в вашем случае будет Ninject.

+0

или даже 'Configure.ConfigureComponent (Dependency Lifecycle.SingleInstance);' –

+0

Право - забыли о более короткой форме, которую мы создали. Спасибо Крису. –

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