private TelemetrySpan StartSpanFromActivity(Activity activity, IOutgoingPhysicalMessageContext context) { context.Headers.TryGetValue(Headers.MessageIntent, out var intent); var routes = context.RoutingStrategies .Select(r => r.Apply(context.Headers)) .Select(t => { switch (t) { case UnicastAddressTag u: return(u.Destination); case MulticastAddressTag m: return(m.MessageType.Name); default: return(null); } }) .ToList(); var operationName = $"{intent ?? activity.OperationName} {string.Join(", ", routes)}"; Tracer.StartActiveSpanFromActivity(operationName, activity, SpanKind.Producer, out var span); return(span); }
/// <summary> /// Creates a <see cref="IRoutingContext" /> based on the current context. /// </summary> public static IRoutingContext CreateRoutingContext(this StageConnector<IOutgoingPhysicalMessageContext, IRoutingContext> stageConnector, OutgoingMessage outgoingMessage, IReadOnlyCollection<RoutingStrategy> routingStrategies, IOutgoingPhysicalMessageContext sourceContext) { Guard.AgainstNull(nameof(outgoingMessage), outgoingMessage); Guard.AgainstNull(nameof(routingStrategies), routingStrategies); Guard.AgainstNull(nameof(sourceContext), sourceContext); return new RoutingContext(outgoingMessage, routingStrategies, sourceContext); }
public void Enrich(Activity activity, IOutgoingPhysicalMessageContext context) { var routes = context.RoutingStrategies .Select(r => r.Apply(context.Headers)) .Select(t => t switch { UnicastAddressTag u => u.Destination, MulticastAddressTag m => m.MessageType.FullName, _ => null })
private static void SetSpanAttributes(Activity activity, IOutgoingPhysicalMessageContext context, TelemetrySpan span) { span.SetAttribute("messaging.message_id", context.MessageId); span.SetAttribute("messaging.message_payload_size_bytes", context.Body.Length); span.ApplyContext(context.Builder.Build <ReadOnlySettings>(), context.Headers); foreach (var tag in activity.Tags) { span.SetAttribute($"messaging.nservicebus.{tag.Key.ToLowerInvariant()}", tag.Value); } }
public static bool TryGet( IOutgoingPhysicalMessageContext context, [NotNullWhen(true)] out DedupePipelineState?state) { if (context.Extensions.TryGet(out DedupePipelineState found)) { state = found; return(true); } state = null; return(false); }
/// <summary> /// Creates a <see cref="IRoutingContext" /> based on the current context. /// </summary> public static IRoutingContext CreateRoutingContext(this StageConnector <IOutgoingPhysicalMessageContext, IRoutingContext> stageConnector, OutgoingMessage outgoingMessage, IReadOnlyCollection <RoutingStrategy> routingStrategies, IOutgoingPhysicalMessageContext sourceContext) { Guard.AgainstNull(nameof(outgoingMessage), outgoingMessage); Guard.AgainstNull(nameof(routingStrategies), routingStrategies); Guard.AgainstNull(nameof(sourceContext), sourceContext); return(new RoutingContext(outgoingMessage, routingStrategies, sourceContext)); }
public void Enrich(Activity activity, IOutgoingPhysicalMessageContext context) { }
/// <summary> /// Returns the incoming physical message if there is one currently processed. /// </summary> public static bool TryGetIncomingPhysicalMessage(this IOutgoingPhysicalMessageContext context, out IncomingMessage message) { Guard.AgainstNull(nameof(context), context); return(context.Extensions.TryGet(out message)); }