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

时间:2020-03-10 18:27:13

标签: c# nservicebus

在文档中,它提供了以下有关设置持久性的信息:

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

OR

// 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>()”吗?我似乎找不到确切的答案。

1 个答案:

答案 0 :(得分:3)

是的,这完全可以。第一行:

endpointConfiguration.UsePersistence<NHibernatePersistence>();

将所有存储类型的持久性设置为NHibernate。后续各行针对特定的存储类型“覆盖”此配置。我将“ override”一词用引号引起来,因为它会覆盖具有相同原始值的特定存储类型。换句话说,他们正在用NHibernate覆盖NHibernate。

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

这是in the docs的完整说明。