Facing an issue while retrying message from ServiceInsight, below is scenario which not working.
ServiceControl DB installed on DEV3 database server. (error , audit queue configured here)
SourceEndpoint DB installed on DEV3 database server.
DestinationEndpoint DB installed on DEV2 database server.
SourceEndpoint Send command to DestinationEndpoint via Switch(switch@[nsb]@[SourceEndpointDB]) (https://docs.particular.net/samples/router/sql-switch/), Command failed at DestinationEndpoint. As error queue on DEV3 DB,message stays at DEV3 DB
- Retry directly form ServiceInsight - It search for DestinationEndpoint queue on ServiceControl DB & failed.
- Configured retry redirect(https://docs.particular.net/servicepulse/redirect) - From DestinationEndpoint to switch@[nsb]@[SourceEndpointDB]
& try redirect again from ServiceInsight, it failed with error at Router side & router send it to poison queue.
NServiceBus.Router.UnforwardableMessageException: Routing cycle detected: via|6|Switch at DetectCyclesRule.Invoke(PreroutingContext context, Func`2 next)
Please suggest how message can be retried when its flow via sql-switch.
SourceEndpoint : on .Net core, NSB 7, SQL transport
DestinationEndpoint : on .Net framework, NSB 5, SQL transport
Gone through code for NServiceBus.Router, as per that if message has header value for “NServiceBus.Bridge.Trace” : “via” , routerName then it throw “Routing cycle detected” error, this header value added by router when message first time process by router. so basically router not allowing to process message second time but in case of retry we need that.