Пример #1
0
        public static HttpRequestMessage AddCorrelationContext(this HttpRequestMessage message, ICorrelationContext context)
        {
            if (message == null)
            {
                throw new ArgumentNullException(nameof(message));
            }
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context), "Cannot add a null correlation context");
            }
            if (!string.IsNullOrEmpty(context.MessageId))
            {
                message.Headers.Add(context.MessageIdHeader, context.MessageId);
            }
            IEnvoyCorrelationContext envoy = context.EnvoyCorrelationContext;

            message.Headers.Add(envoy.FlagsHeader, envoy.Flags);
            message.Headers.Add(envoy.SampledHeader, envoy.Sampled);
            message.Headers.Add(envoy.RequestIdHeader, envoy.RequestId);
            message.Headers.Add(envoy.SpanIdHeader, envoy.SpanId);
            message.Headers.Add(envoy.ParentSpanIdHeader, envoy.ParentSpanId);
            message.Headers.Add(envoy.TraceIdHeader, envoy.TraceId);
            message.Headers.Add(envoy.OtSpanContextHeader, envoy.OtSpanContext);
            return(message);
        }
 public ICorrelationContext Create(string messageId, IEnvoyCorrelationContext envoyCorrelationContext)
 {
     return(new DefaultCorrelationContext
     {
         MessageId = messageId,
         EnvoyCorrelationContext = envoyCorrelationContext
     });
 }
 public ICorrelationContext Create(IEnvoyCorrelationContext envoyCorrelationContext)
 {
     if (envoyCorrelationContext == null)
     {
         throw new ArgumentNullException(nameof(envoyCorrelationContext));
     }
     return(new DefaultCorrelationContext
     {
         EnvoyCorrelationContext = envoyCorrelationContext
     });
 }
        public ICorrelationContext CreateFromJaegerTracer(string messageId = "")
        {
            var tracer = _provider.GetService <ITracer>();

            if (tracer?.ActiveSpan?.Context == null)
            {
                return(null);
            }

            var ctx = tracer.ActiveSpan.Context.ToString();
            IEnvoyCorrelationContext envoy = ExtractFromJaegerContext(ctx);

            envoy.OtSpanContext = ctx;
            envoy.RequestId     = Activity.Current == null ? new TraceIdGenerator().TraceIdentifier : Activity.Current?.RootId;

            return(Create(messageId, envoy));
        }