Custom database name for persisting host sagas

73 Views Asked by At

Is it possible to use custom database name (not endpoint) for persisting nservicebus host sagas using ravenDb?

I use NServiceBus 3.3 and RavenDB 2.5. and initialize endpoind in such way:

public class RavenConfig : IWantCustomInitialization
{
    public void Init()
    {
          Configure.Instance.RavenPersistence("AllHostsRavenDB");
          Configure.Instance.RavenSagaPersister();
          Configure.Instance.RavenSubscriptionStorage();
          Configure.Instance.UseRavenTimeoutPersister();
    }
 }

My App.config contains:

<connectionStrings>
  <add name="AllHostsRavenDB" 
     connectionString="Url=http://localhost:8080; DefaultDatabase=ABC;" />
</connectionStrings>
2

There are 2 best solutions below

1
On

From the documentation:

To control the database name in code, instead of via the configuration, use the Configure.RavenPersistence(string connectionStringName, string databaseName) signature. This can be useful in a multitenant scenario.

http://docs.particular.net/nservicebus/ravendb/#nservicebus-3-and-nservicebus-4-overriding-the-defaults

Would that solve your problem?

0
On

I finally got it working! I changed my custom intitialization from:

public class RavenConfig : IWantCustomInitialization
{
    public void Init()
    {
      Configure.Instance.RavenPersistence("AllHostsRavenDB");
      Configure.Instance.RavenSagaPersister();
      Configure.Instance.RavenSubscriptionStorage();
      Configure.Instance.UseRavenTimeoutPersister();
    }
}

to:

public class RavenConfig : IWantToRunBeforeConfigurationIsFinalized
{
    public void Run()
    {
        Configure.Instance.RavenPersistence("AllHostsRavenDB");
        Configure.Instance.RavenSagaPersister();
        Configure.Instance.RavenSubscriptionStorage();
        Configure.Instance.UseRavenTimeoutPersister();
    }
}