NServiceBus 4没有RavenDB

Rai*_*aif 3 nservicebus ravendb nservicebus4

无论如何在没有安装RavenDB的情况下使用NServicebus 4?我们正在使用2.5,我想升级到4但如果我们必须在生产服务器上安装RavenDB,这将是一个艰难的销售.有什么工作吗?

小智 9

是.您可以在没有RavenDB的情况下使用NServiceBus.虽然默认订阅存储(对于pub/sub),默认的saga persister和默认超时持久性是RavenDB,使用如下所示的自定义初始化,你可以将它们切换到NHibernate持久性,在这种情况下你不需要RavenDB.

class CustomInit : INeedInitialization
{
    public void Init()
    {
        Configure.Instance.UseNHibernateSubscriptionPersister();
        Configure.Instance.UseNHibernateSagaPersister();
        Configure.Instance.UseNHibernateTimeoutPersister();
    }
}
Run Code Online (Sandbox Code Playgroud)

此外,使用NHibernate的app.config在4.x中进一步简化

         <connectionStrings>
<add name="NServiceBus/Persistence" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=nservicebus;Integrated Security=True"/>
Run Code Online (Sandbox Code Playgroud)

并在appSettings中指定其他所需的NHibernate设置,如下所示:

    <appSettings>
<!-- dialect is defaulted to MsSql2008Dialect, if needed change accordingly -->
<add key="NServiceBus/Persistence/NHibernate/dialect" value="NHibernate.Dialect.MsSql2008Dialect" />
<!-- other optional settings examples -->
<add key="NServiceBus/Persistence/NHibernate/connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
<add key="NServiceBus/Persistence/NHibernate/connection.driver_class" value="NHibernate.Driver.Sql2008ClientDriver" />
Run Code Online (Sandbox Code Playgroud)

  • 一个偶然的terser选项是NHibernatePersistence.UseAsDefault(); (5认同)