Мы размещаем некоторые службы WCF, и мы используем замок Виндзор, как МОК и использовать WCF фонд для размещения службы:Ребус обработки в контексте WCF с NHibernate и замок WCF Facility сообщение
Component.For<IInter1>()
.ImplementedBy<Class1>()
.LifestylePerWcfOperation()
.AsWcfService()
Все другие зависимости регистрируются с LifestylePerWcfOperation в Виндзоре.
Ребус обработчиков, как это:
public class TestCastleRebusHandler : IHandleMessages<CastleRebusMessage>
{
public TestCastleRebusHandler(DependenchyWithWCFContext failsHere) { }
public void Handle(CastleRebusMessage message) { }
}
Проблем все регистрации PerWcfOperation, и они не могут быть введены в Ребус, так как контекст не WCF, при получении сообщения. Конфигурация Rebus:
_adapter = new Rebus.Castle.Windsor.WindsorContainerAdapter(Container);
_bus = Configure.With(_adapter)
.Logging(x => x.ColoredConsole(LogLevel.Info))
.Transport(x => x.UseMsmqAndGetInputQueueNameFromAppConfig())
.MessageOwnership(m => m.FromRebusConfigurationSection())
.Subscriptions(x => x.StoreInMemory())
.CreateBus()
.Start();
Каков наилучший подход для обработки этого сценария?
Кен
Спасибо. Это имеет смысл. Поэтому, если я хочу сделать шаблон «сеанс за сообщение», где ISession доступен через всю жизнь обработки сообщений и автоматически фиксируется на завершающем этапе, нужно ли ему использовать PreMessage и AfterMessage для управления сеансом? И безопасно ли хранить сессию в течение жизни в CallContext или лучше другой контекст? – Ken
на самом деле есть расширение LifestylePerRebusMessage() 'Windsor на пути - оно будет доступно через 0,98.6 сегодня вечером – mookid8000
, и вы должны использовать' MessageContext.Current.TransactionContext.Элементы ", если вы хотите безопасно хранить вещи при обращении с сообщением Rebus - он будет автоматически передаваться в нужные потоки в продолжении при использовании' async'/'await' – mookid8000