Rerouting Existing Timeouts

Component: RavenDB Persistence
NuGet Package NServiceBus.RavenDB (3.x)
Target NServiceBus Version: 5.x
Standard support for version 5.x of NServiceBus has expired. For more information see our Support Policy.
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 endpoint name existing timeouts will need to be manually modified so that they could be delivered to new endpoint. In order to do that the following steps should be followed:

  • In Raven Persistence in Timeout Data document the following values need to be updated to contain new endpoint name or updated machine name:
    • Destination.Queue (contains endpoint name only)
    • Destination.Machine (contains only machine name)
    • OwningTimeoutManager (contains endpoint name only)
    • Headers:
      • NServiceBus.Timeout.RouteExpiredTimeoutTo
      • NServiceBus.OriginatingEndpoint
  • After the above change the endpoint need to be restarted to process the timeout

Related Articles

Last modified