func NewTracingHandler()

in v2/tracing.go [36:55]


func NewTracingHandler(next Handler, options ...func(t *TracingHandlerOpts)) HandlerFunc {
	t := &TracingHandlerOpts{
		spanNameFormat: func(defaultSpanName string, _ *azservicebus.ReceivedMessage) string {
			return defaultSpanName
		},
	}
	for _, opt := range options {
		opt(t)
	}
	return func(ctx context.Context, settler MessageSettler, message *azservicebus.ReceivedMessage) {
		defaultStartOptions := []trace.SpanStartOption{trace.WithAttributes(shuttleotel.MessageAttributes(message)...)}
		startOptions := append(defaultStartOptions, t.spanStartOptions...)
		ctx, span := t.tracer().Start(
			shuttleotel.Extract(ctx, message),
			t.spanNameFormat(defaultReceiverHandleSpanName, message),
			startOptions...)
		defer span.End()
		next.Handle(ctx, settler, message)
	}
}