NServiceBus.MsmqUtilities.AssignMsmqNativeCorrelationId C# (CSharp) Method

AssignMsmqNativeCorrelationId() static private method

static private AssignMsmqNativeCorrelationId ( OutgoingMessage message, System.Messaging.Message result ) : void
message OutgoingMessage
result System.Messaging.Message
return void
        static void AssignMsmqNativeCorrelationId(OutgoingMessage message, Message result)
        {
            string correlationIdHeader;

            if (!message.Headers.TryGetValue(Headers.CorrelationId, out correlationIdHeader))
            {
                return;
            }

            if (string.IsNullOrEmpty(correlationIdHeader))
            {
                return;
            }

            Guid correlationId;

            if (Guid.TryParse(correlationIdHeader, out correlationId))
            {
                //msmq required the id's to be in the {guid}\{incrementing number} format so we need to fake a \0 at the end to make it compatible
                result.CorrelationId = $"{correlationIdHeader}\\0";
                return;
            }

            try
            {
                if (correlationIdHeader.Contains("\\"))
                {
                    var parts = correlationIdHeader.Split('\\');

                    int number;

                    if (parts.Length == 2 && Guid.TryParse(parts.First(), out correlationId) &&
                        int.TryParse(parts[1], out number))
                    {
                        result.CorrelationId = correlationIdHeader;
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Warn($"Failed to assign a native correlation id for message: {message.MessageId}", ex);
            }
        }