2014-02-14 3 views
1

В настоящее время мы думаем о переносе одного из наших приложений из rhino-esb в rebus. Наши аргументы в пользу этого заключается в том, что rhino-esb в наши дни практически неактивен.Использование вложенного контейнера для сообщения в rebus

Сегодня мы зависим от структуры структуры, чтобы использовать вложенный контейнер для каждого сообщения, и мы хотели бы сохранить его таким образом, чтобы нам не нужно было изменять значительную часть нашей инфраструктуры. Я немного просмотрел ребус api, но не нашел хороший способ обработки вложенных контейнеров. Есть ли у кого-нибудь предложения по его решению? Или, может быть, вы внедрили его сами?

ответ

2

Ну, я не являюсь владельцем StructureMap, и я должен признать, что я никогда не пытался заставить Rebus работать с вложенными контейнерами/дочерними контейнерами.

Но я думаю, что вы могли бы сделать его работу, если вы реализуете активатор обработчика и единицу работы менеджера самостоятельно, которые вы можете включить так:

Configure.With(yourHandlerActivator) 
    .Events(e => e.AddUnitOfWorkManager(yourUnitOfWorkManager) 
    .(...) 

, а затем вы можете использовать эту единицу менеджер работы по созданию дочернего контейнера, который вы копить в контексте сообщения, как это:

MessageContext.GetCurrent().Items["some-key"] = yourChildContainer; 

который затем выборки & использовать в вашем активаторе обработчика, когда приходит время, чтобы решить обработчик.

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

+0

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

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