void SetupLegacyRetriesSatellite(FeatureConfigurationContext context)
{
var retriesQueueLogicalAddress = context.Settings.LogicalAddress().CreateQualifiedAddress("Retries");
var retriesQueueTransportAddress = context.Settings.GetTransportAddress(retriesQueueLogicalAddress);
var mainQueueLogicalAddress = context.Settings.LogicalAddress();
var mainQueueTransportAddress = context.Settings.GetTransportAddress(mainQueueLogicalAddress);
var requiredTransactionMode = context.Settings.GetRequiredTransactionModeForReceives();
context.AddSatelliteReceiver("Legacy Retries Processor", retriesQueueTransportAddress, requiredTransactionMode, new PushRuntimeSettings(maxConcurrency: 1),
(config, errorContext) =>
{
return RecoverabilityAction.MoveToError(config.Failed.ErrorQueue);
},
(builder, messageContext) =>
{
var messageDispatcher = builder.Build<IDispatchMessages>();
var outgoingHeaders = messageContext.Headers;
outgoingHeaders.Remove("NServiceBus.ExceptionInfo.Reason");
outgoingHeaders.Remove("NServiceBus.ExceptionInfo.ExceptionType");
outgoingHeaders.Remove("NServiceBus.ExceptionInfo.InnerExceptionType");
outgoingHeaders.Remove("NServiceBus.ExceptionInfo.HelpLink");
outgoingHeaders.Remove("NServiceBus.ExceptionInfo.Message");
outgoingHeaders.Remove("NServiceBus.ExceptionInfo.Source");
outgoingHeaders.Remove("NServiceBus.FailedQ");
outgoingHeaders.Remove("NServiceBus.TimeOfFailure");
//HINT: this header is added by v3 when doing SLR
outgoingHeaders.Remove("NServiceBus.OriginalId");
var outgoingMessage = new OutgoingMessage(messageContext.MessageId, outgoingHeaders, messageContext.Body);
var outgoingOperation = new TransportOperation(outgoingMessage, new UnicastAddressTag(mainQueueTransportAddress));
return messageDispatcher.Dispatch(new TransportOperations(outgoingOperation), messageContext.TransportTransaction, messageContext.Context);
});
}