NHibernate Persistence Requires Different Assemblies
In order to go back to NH persistence you need to pull in the NServiceBus.NHibernate package separately. You will also need to create your own profile that default to these settings.
public void ProfileActivated() { if (!Configure.Instance.Configurer.HasComponent<ISagaPersister>()) Configure.Instance.NHibernateSagaPersister(); if (!Configure.Instance.Configurer.HasComponent<IManageMessageFailures>()) Configure.Instance.MessageForwardingInCaseOfFault(); if (Configure.Instance.IsTimeoutManagerEnabled()) Configure.Instance.UseNHibernateTimeoutPersister(); if (Config is AsA_Publisher && !Configure.Instance.Configurer.HasComponent<ISubscriptionStorage>()) Configure.Instance.DBSubcriptionStorage(); }
SLRs and Timeouts Creates Extra Queues
These features require extra queues that you didn't have in 2.x, so these need to be disabled via custom initialization.
public void Init() { Configure.With() .DefaultBuilder() .XmlSerializer() .DisableSecondLevelRetries() .DisableTimeoutManager(); }
Timeout Persistence Moved to the Database
There is no more MSMQ timeout persistence, so if you want this back, you'll need to implement it yourself. This should be as simple as going back into the code and copying out the code.
Adam, can you tell us about the factors that led to the decision to stay old school?
ReplyDeleteWe don't have full control over our deployment process and it's challenging to make changes. We also haven't successfully gotten support for RavenDB. Nothing technical, purely organizational.
ReplyDelete