In RavenDB 3.5, the client implementation of distributed transactions contains a bug that could cause an endpoint to lose data under rare conditions. If RavenDB is configured to enlist in distributed transactions with RavenDB 3.5, read DTC not supported for RavenDB Persistence.
Using RavenDB version 5 and higher in a cluster configuration with multiple nodes is only supported from version 7 or higher of the NServiceBus.RavenDB persistence package. For more information, read cluster configuration with multiple nodes.
The Outbox feature requires persistence in order to store messages and enable deduplication.
Extra collections created by the RavenDB Outbox persistence
To keep track of duplicate messages, the RavenDB implementation of Outbox creates a special collection of documents called OutboxRecord
.
Deduplication record lifespan
The RavenDB persistence retains deduplication records for 7 days by default and runs the cleanup operation every minute.
These settings can be modified by specifying the desired values in the settings dictionary:
endpointConfiguration.SetTimeToKeepDeduplicationData(TimeSpan.FromDays(7));
endpointConfiguration.SetFrequencyToRunDeduplicationDataCleanup(TimeSpan.FromMinutes(1));
The cleanup task can be disabled by specifying a value of Timeout.
for SetFrequencyToRunDeduplicationDataCleanup
. This can be useful when an endpoint is scaled out and instances are competing to run the cleanup task.
When running in multi-tenant mode, cleanup must be handled manually since NServiceBus does not know what databases are in use.
It is advised to run the cleanup task on only one NServiceBus endpoint instance per RavenDB database and disable the cleanup task on all other NServiceBus endpoint instances for the most efficient cleanup execution.