NServiceBus教程-持久化

时间:2021-10-28 06:05:15

NServiceBus的各种特性需要持久性。其中有超时、传奇和订阅存储。

四个持久化技术在NServiceBus在使用:

读到安装Raven DB如何连接 .

使用NHibernate的持久性

从NServiceBus V3.0,支持NHibernate持久性位于一个单独的组装。的配置被进一步简化V4.0 +。

NHibernate的持久性v3 . x.

可用是什么?

下面的表总结了什么是可用的,如何配置每个特性。

类型

内存中

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特性,没有显式配置持久化技术。

阅读更多关于不同的配置文件 .