使用 NServiceBus 持久化的正确用法是什么?

What is the correct usage for persistence using NServiceBus?

在文档中,它提供了以下关于设置持久性的内容:

// Use NHibernate for all persistence concerns
endpointConfiguration.UsePersistence<NHibernatePersistence>();

// or select specific concerns   <------- ??????
endpointConfiguration.UsePersistence<NHibernatePersistence, StorageType.Sagas>();
endpointConfiguration.UsePersistence<NHibernatePersistence, StorageType.Subscriptions>();
endpointConfiguration.UsePersistence<NHibernatePersistence, StorageType.Timeouts>();
endpointConfiguration.UsePersistence<NHibernatePersistence, StorageType.Outbox>();

我继承了这段代码,注意它包含了“UsePersistence<NHibernatePersistence>()”,不用担心:

        endpointConfiguration.UsePersistence<NHibernatePersistence>();
        endpointConfiguration.UsePersistence<NHibernatePersistence, StorageType.Sagas>();
        endpointConfiguration.UsePersistence<NHibernatePersistence, StorageType.Subscriptions>();
        endpointConfiguration.UsePersistence<NHibernatePersistence, StorageType.Timeouts>();
        endpointConfiguration.UsePersistence<NHibernatePersistence, StorageType.Outbox>();
        endpointConfiguration.UsePersistence<NHibernatePersistence, StorageType.GatewayDeduplication>();

我的问题 按照我们的代码构建它的方式使用“UsePersistence<NHibernatePersistence>()”是否可以?我似乎无法找到明确的答案。

是的,这完全没问题。第一行:

endpointConfiguration.UsePersistence<NHibernatePersistence>();

将所有存储类型的持久性设置为 NHibernate。后续行"override" 此配置针对特定的存储类型。我在单词 "override" 周围加上引号,因为它覆盖了具有相同原始值的特定存储类型。换句话说,他们用 NHibernate 覆盖了 NHibernate。

在这个例子中,你只需要第一行,其余的都是多余的。也就是说,发布的代码应该可以正常工作。

这已得到充分解释in the docs