NServiceBus的各种特性需要持久性。其中有超时、传奇和订阅存储。
四个持久化技术在NServiceBus在使用:
- RavenDB
- nHibernate
- 内存中
- MSMQ
读到安装Raven DB和如何连接 .
使用NHibernate的持久性
从NServiceBus V3.0,支持NHibernate持久性位于一个单独的组装。的配置被进一步简化V4.0 +。
可用是什么?
下面的表总结了什么是可用的,如何配置每个特性。
类型
内存中
RavenDB
nHibernate
MSMQ
超时
X
X
X
v3.3.0不支持
订阅
X
X
X
X
传奇
X
X
X
- - - - - -
网关
X
X
X
- - - - - -
经销商
- - - - - -
- - - - - -
- - - - - -
X
存储你的订阅MSMQ不适合场景需要规模的端点。原因是,订阅队列不能在多个端点之间共享。
如果自我托管,您可以配置每个功能的持久性技术。例如,在RavenDB存储订阅内存和超时,使用这段代码:
static void Main()
{
Configure.With()
.Log4Net()
.DefaultBuilder()
.XmlSerializer()
.MsmqTransport()
.IsTransactional(true)
.PurgeOnStartup(false)
.InMemorySubscriptionStorage()
.UnicastBus()
.ImpersonateSender(false)
.LoadMessageHandlers()
.UseRavenTimeoutPersister()
.CreateBus()
.Start(() => Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install());
}
和NServiceBus v4.x
static void Main()
{
Configure.Serialization.Xml();
Configure.Transactions.Enable();
Configure.With()
.Log4Net()
.DefaultBuilder()
.UseTransport<Msmq>()
.PurgeOnStartup(false)
.InMemorySubscriptionStorage()
.UnicastBus()
.RunHandlersUnderIncomingPrincipal(false)
.LoadMessageHandlers()
.UseRavenTimeoutPersister()
.CreateBus()
.Start(() => Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install());
}
当你使用NServiceBus.Host。exe开箱即用的,您可以使用一个可用的配置文件。下面的表显示了持久性技术每个预构建配置文件默认配置。此外,您可以重写默认配置。阅读更多关于配置文件 ,这里太.
下表总结了不同的持久化技术被内置的配置文件。
配置持久性技术之前,为了避免覆盖你的配置,配置文件检查是否使用其他类型的存储。
- - - - - -
内存中
RavenDB
nHibernate
MSMQ
超时
lite
集成/生产
- - - - - -
保持队列管理
订阅
lite
集成/生产
- - - - - -
- - - - - -
传奇
lite
集成/生产
- - - - - -
- - - - - -
网关
lite
多站点
- - - - - -
- - - - - -
经销商
- - - - - -
- - - - - -
- - - - - -
经销商
默认的持久化技术
的 AsAServer
角色激活超时经理。这个角色不明确地确定使用哪一个持久化技术。因此,默认超时持久化技术经理(RavenDB)。
类似于 AsAServer
角色,不同的概要文件激活不同NServiceBus特性,没有显式配置持久化技术。
阅读更多关于不同的配置文件 .