func()

in pkg/inst-api-semconv/instrumenter/message/message_attrs_extractor.go [47:101]


func (m *MessageAttrsExtractor[REQUEST, RESPONSE, GETTER]) OnStart(attributes []attribute.KeyValue, parentContext context.Context, request REQUEST) ([]attribute.KeyValue, context.Context) {
	messageAttrSystem := m.Getter.GetSystem(request)
	isTemporaryDestination := m.Getter.IsTemporaryDestination(request)
	if isTemporaryDestination {
		attributes = append(attributes, attribute.KeyValue{
			Key:   semconv.MessagingDestinationTemporaryKey,
			Value: attribute.BoolValue(true),
		}, attribute.KeyValue{
			Key:   semconv.MessagingDestinationNameKey,
			Value: attribute.StringValue("(temporary)"),
		})
	} else {
		attributes = append(attributes, attribute.KeyValue{
			Key:   semconv.MessagingDestinationNameKey,
			Value: attribute.StringValue(m.Getter.GetDestination(request)),
		}, attribute.KeyValue{
			Key:   semconv.MessagingDestinationTemplateKey,
			Value: attribute.StringValue(m.Getter.GetDestinationTemplate(request)),
		})
	}
	partitionId := m.Getter.GetDestinationPartitionId(request)
	if partitionId != "" {
		attributes = append(attributes, attribute.KeyValue{
			Key:   semconv.MessagingDestinationPartitionIDKey,
			Value: attribute.StringValue(partitionId),
		})
	}
	isAnonymousDestination := m.Getter.IsAnonymousDestination(request)
	if isAnonymousDestination {
		attributes = append(attributes, attribute.KeyValue{
			Key:   semconv.MessagingDestinationAnonymousKey,
			Value: attribute.BoolValue(true),
		})
	}
	attributes = append(attributes, attribute.KeyValue{
		Key:   semconv.MessagingMessageConversationIDKey,
		Value: attribute.StringValue(m.Getter.GetConversationId(request)),
	}, attribute.KeyValue{
		Key:   semconv.MessagingMessageBodySizeKey,
		Value: attribute.Int64Value(m.Getter.GetMessageBodySize(request)),
	}, attribute.KeyValue{
		Key:   semconv.MessagingMessageEnvelopeSizeKey,
		Value: attribute.Int64Value(m.Getter.GetMessageEnvelopSize(request)),
	}, attribute.KeyValue{
		Key:   semconv.MessagingClientIDKey,
		Value: attribute.StringValue(m.Getter.GetClientId(request)),
	}, attribute.KeyValue{
		Key:   semconv.MessagingOperationNameKey,
		Value: attribute.StringValue(string(m.Operation)),
	}, attribute.KeyValue{
		Key:   semconv.MessagingSystemKey,
		Value: attribute.StringValue(messageAttrSystem),
	})
	return attributes, parentContext
}