/// <summary> /// Called before a message is dispatched to any consumers. Sets the <see cref="MassTransitContext"/>. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="context"></param> /// <returns></returns> public Task PreConsume <T>(ConsumeContext <T> context) where T : class { var parentActivityId = context.Headers?.Get(Constants.ActivityIdHeader, string.Empty); var activity = new System.Diagnostics.Activity(Constants.ConsumeActivityName); if (!string.IsNullOrEmpty(parentActivityId)) { activity.SetParentId(parentActivityId); } var baggage = context.Headers?.Get <IEnumerable <KeyValuePair <string, string> > >(Constants.BaggageHeader); if (baggage?.Any() ?? false) { foreach (var item in baggage) { activity.AddBaggage(item.Key, item.Value); } } activity.Start(); _tracer?.StartSpanFromActivity(Constants.SpanConsumeOperationNamePrefix, activity, SpanKind.Consumer); return(Task.CompletedTask); }
/// <summary> /// Invoke Grain call context. /// </summary> /// <param name="context">The <see cref="IOutgoingGrainCallContext"/>.</param> /// <returns>A <see cref="Task"/>.</returns> public async Task Invoke(IIncomingGrainCallContext context) { var activity = new System.Diagnostics.Activity(OrleansDistributedTracingConstants.IncomingGrainFilterActivityName); if (RequestContext.Get(Constants.ActivityHeader) is string traceId) { activity.SetParentId(traceId); } if (RequestContext.Get(Constants.BaggageHeader) is IEnumerable <KeyValuePair <string, string> > baggage) { foreach (var item in baggage) { activity.AddBaggage(item.Key, item.Value); } } activity.Start(); await context.Invoke(); activity.Stop(); }