Rerouting Existing Timeouts

Component: RavenDB Persistence
NuGet Package NServiceBus.RavenDB (5.x)
Target NServiceBus Version: 7.x
RavenDB's implementation of distributed transactions contains a bug that could cause an endpoint, in certain (rare) conditions, to lose data. If RavenDB is configured to enlist in distributed transactions, read DTC not supported for RavenDB Persistence.

After moving an endpoint from one machine to another or changing an endpoint's name, existing timeouts must be manually modified to end up in the new endpoint. To do that, follow these steps:

  • Update the following values in the Timeout Data documents in the Raven persister with the new endpoint name or updated machine name:
    • Destination
    • OwningTimeoutManager (contains endpoint name only)
    • Headers:
      • NServiceBus.ReplyToAddress
      • NServiceBus.Timeout.RouteExpiredTimeoutTo
      • NServiceBus.OriginatingEndpoint
  • After the above changes are made, restart the endpoint to process the timeout.

Related Articles


Last modified