IoC, контейнеры и путаница NServiceBus

Вот моя установка

  • Замок Виндзор - мой контейнер
  • NServiceBus сам использует свой собственный контейнер внутри, Spring по умолчанию
  • Я реализую конфигурацию PubSub.

Хорошо, если мой Bus.Publish происходит в моем классе IWantToRunAtStartup, тогда все в порядке. В качестве теста, например, в Run () мы можем запустить таймер, и он перейдет в цикл стиля службы.

Однако что, если я хочу абстрагировать NServiceBus из своего приложения и запустить приложение:

new CustomPulisherClass().Notify(ISomeMessage msg);

В этой ситуации, как мне реализовать CustomPublisherClass.

Мое замешательство связано с тем, что NServiceBus уже работает как служба, она уже запущена. Как мне добраться до правильного экземпляра объекта Bus?


person andy    schedule 19.05.2010    source источник


Ответы (1)


Вы должны настроить NServiceBus для использования Windsor в качестве внутреннего контейнера:

http://sourceforge.net/apps/mediawiki/nservicebus/index.php?title=Additional_containers

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

person Andreas Öhlund    schedule 19.05.2010
comment
что ты имеешь в виду? Мне просто нужно было бы получить мой текущий экземпляр контейнера и перейти к .Resolve ‹IBus› ()? без необходимости настраивать IBus в моем windsor.config? - person andy; 19.05.2010
comment
Кроме того, Андреас, как это будет работать, если NServiceBus работает под отдельным процессом ... то есть службой? это может работать? - person andy; 20.05.2010
comment
Да, шина будет доступна с помощью .Resolve. Не следует за вами по другому вопросу. Q: Вы всегда общаетесь, используя экземпляр шины, работающий в том же процессе, что и ваш собственный код. Например. Если у вас есть веб-приложение, отправляющее команды серверной службе, размещенной на универсальном хосте NSB, вы также должны настроить NSB в своем веб-приложении и выполнить bus.Send (new WhateverMessage ()) Вкратце: NSB всегда запускается в том же процессе, что и ваш код, который взаимодействует с шиной Помогает ли это? - person Andreas Öhlund; 20.05.2010
comment
да, отлично, спасибо Андреас. Думаю, я немного запутался, но мне просто нужно было подтверждение от кого-то еще. хорошая вещь! - person andy; 21.05.2010