Я пытаюсь отследить проблему кеширования и не могу найти никаких ответов. Что у меня есть:
Серия из 5 обработчиков сообщений для обработки «заказа» с нашего сайта ASP.NET MVC. Я должен отметить, что поведение, отмеченное ниже, было замечено, когда процесс был одним обработчиком сообщений. Я сломал это, чтобы высушить это.
Обработчики следующие:
- OrderCompleteHandler до
- CreateArtifact1Handler до
- CreateArtifact2Handler до
- RESTIntegrationHandler до
- EMailHandler сделано
Процесс работает отлично, все замечательно с одним большим предупреждением: если на сайте изменяются какие-либо постоянные данные в базе данных, обработчики nservicebus не видят отраженные данные при повторной обработке одних и тех же обработчиков для тех же самых запись (s).
Мы внедрили IMessageModule со следующим кодом:
public void HandleBeginMessage()
{
CurrentSessionContext.Bind(SessionFactory.OpenSession());
}
Если я перезагружаю сервисную шину, изменения данных корректно отражаются, что указывает мне (возможно, неправильно) на что-то неправильно настроенное на стороне сервисной шины.
Конфигурация NServiceBus:
return Fluently.Configure()
.Database(
MsSqlConfiguration.MsSql2005
.CurrentSessionContext( "NHibernate.Context.ThreadStaticSessionContext, NHibernate" )
.ConnectionString(c => c.FromAppSetting("connection.string"))
.ProxyFactoryFactory("NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle")
.ShowSql())
.Mappings(m =>
{
m.FluentMappings.AddFromAssemblyOf<UserMapping>();
m.FluentMappings.Conventions.AddFromAssemblyOf<EnumConvention>();
})
.ExposeConfiguration(cfg =>
{
cfg.EventListeners.PostInsertEventListeners = new IPostInsertEventListener[] { new AuditLogEventListener() };
cfg.EventListeners.SaveEventListeners = new ISaveOrUpdateEventListener[] { new AuditLogEventListener() };
cfg.SetProperty("cache.provider_class", "NHibernate.Cache.HashtableCacheProvider");
cfg.SetProperty("cache.use_second_level_cache", "true");
cfg.SetProperty("cache.use_query_cache", "true");
} )
.BuildSessionFactory();
Веб-конфигурация:
return Fluently.Configure()
.Database(
MsSqlConfiguration.MsSql2005
.Cache(c => c
.UseQueryCache()
.ProviderClass<SysCacheProvider>() )
.CurrentSessionContext("NHibernate.Context.ManagedWebSessionContext, NHibernate")
.ConnectionString(c => c
.FromAppSetting("connection.string"))
.ProxyFactoryFactory("NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle")
.ShowSql())
.Mappings(m =>
{
m.FluentMappings.AddFromAssemblyOf<UserMapping>();
m.FluentMappings.Conventions.AddFromAssemblyOf<EnumConvention>();
})
.ExposeConfiguration(cfg =>
{
cfg.EventListeners.PostInsertEventListeners = new IPostInsertEventListener[] { new AuditLogEventListener() };
cfg.EventListeners.SaveEventListeners = new ISaveOrUpdateEventListener[] {new AuditLogEventListener()};
})
.BuildSessionFactory();
Мой вопрос: что я мог пропустить?
Спасибо