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
}