/// <summary> /// Получить сквозной идентификатор. /// </summary> /// <param name="properties">Свойства сообщения.</param> /// <param name="traceIdFromBody">TraceId из тела сообщения.</param> /// <param name="traceId">Сквозной идентификатор.</param> /// <param name="traceIdSource">Строка-результат.</param> internal static bool TryGetTraceInfo( this IBasicProperties properties, Guid?traceIdFromBody, out Guid?traceId, out string?traceIdSource ) { traceIdSource = null; traceId = null; var traceIdResult = TryGetFromCorrelationId(properties) ?? TryGetFromHeaders(properties) ?? traceIdFromBody; if (traceIdResult.HasValue && traceIdResult != Guid.Empty) { traceId = traceIdResult; var traceIdSourceResult = properties.TryGetHeaderValue(TRACE_ID_SOURCE_KEY, out var traceIdSourceByteArray); traceIdSource = traceIdSourceResult ? Encoding.UTF8.GetString(traceIdSourceByteArray) : "FromMessage"; return(true); } return(false);