我想追查什麼似乎是一個緩存問題,我似乎無法找到任何答案。我有什麼是:NServicebus&NHibernate緩存問題
一系列的5個消息處理程序來處理從我們的ASP.NET MVC網站'訂單'。我應該注意到,當流程是一個消息處理程序時,會看到下面提到的行爲。我打破了它幹起來。
的處理程序如下:
- OrderCompleteHandler 到
- CreateArtifact1Handler 到
- CreateArtifact2Handler 到
- RESTIntegrationHandler 到
- EMailHandler 做
的過程中正常工作,每一件事情是偉大的一個大的警告:如果任何在數據庫中的持久數據的站點中的改變時,nservicebus處理程序沒有看到的數據反映當重新處理相同的處理程序的同一記錄。
我們已經實施了IMessageModule瓦特/下面的代碼:
public void HandleBeginMessage()
{
CurrentSessionContext.Bind(SessionFactory.OpenSession());
}
如果我重新啓動servicebus,數據的變化適當反映,這點我(也許不正確地)在servicebus側配置一些錯誤。
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();
Web配置:
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();
我的問題是:什麼可能我錯過了什麼?
由於
我將不得不給這個鏡頭。感謝您的建議和鏈接。當我知道什麼時我會回來。 – DevSolo 2011-03-10 18:20:22