Add paragraph about usage of parent-child relationship (#1414)
Co-authored-by: Liudmila Molkova <limolkova@microsoft.com>
This commit is contained in:
parent
1fcaa7f7c6
commit
13373cb8e0
|
|
@ -0,0 +1,4 @@
|
||||||
|
change_type: enhancement
|
||||||
|
component: messaging
|
||||||
|
note: Clarify the possibility to have a parent-child trace structure in messaging conventions
|
||||||
|
issues: [1282]
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
- [Trace structure](#trace-structure)
|
- [Trace structure](#trace-structure)
|
||||||
- [Producer spans](#producer-spans)
|
- [Producer spans](#producer-spans)
|
||||||
- [Consumer spans](#consumer-spans)
|
- [Consumer spans](#consumer-spans)
|
||||||
|
- [Message creation context as parent of "Process" span](#message-creation-context-as-parent-of-process-span)
|
||||||
- [Messaging attributes](#messaging-attributes)
|
- [Messaging attributes](#messaging-attributes)
|
||||||
- [Recording per-message attributes on batch operations](#recording-per-message-attributes-on-batch-operations)
|
- [Recording per-message attributes on batch operations](#recording-per-message-attributes-on-batch-operations)
|
||||||
- [Examples](#examples)
|
- [Examples](#examples)
|
||||||
|
|
@ -261,12 +262,56 @@ batch of messages, or for no message at all (if it is signalled that no
|
||||||
messages were received). For each message it accounts for, the "Process" or
|
messages were received). For each message it accounts for, the "Process" or
|
||||||
"Receive" span SHOULD link to the message's creation context.
|
"Receive" span SHOULD link to the message's creation context.
|
||||||
|
|
||||||
|
> [!IMPORTANT]
|
||||||
|
> These conventions use spans links as the default mechanism to correlate
|
||||||
|
> producers and consumer(s) because:
|
||||||
|
>
|
||||||
|
> - It is the only consistent trace structure that can be guaranteed,
|
||||||
|
> given the many different messaging systems models available.
|
||||||
|
>
|
||||||
|
> - It is the only option to correlate producer and consumer(s) in batch scenarios
|
||||||
|
> as a span can only have a single parent.
|
||||||
|
>
|
||||||
|
> - It is the only option to correlate produce and consumer(s) when message
|
||||||
|
> consumption can happen in the scope of another ambient context such as a
|
||||||
|
> HTTP server span.
|
||||||
|
|
||||||
"Settle" spans SHOULD be created for every manually or automatically triggered
|
"Settle" spans SHOULD be created for every manually or automatically triggered
|
||||||
settlement operation. A single "Settle" span can account for a single message
|
settlement operation. A single "Settle" span can account for a single message
|
||||||
or for multiple messages (in case messages are passed for settling as batches).
|
or for multiple messages (in case messages are passed for settling as batches).
|
||||||
For each message it accounts for, the "Settle" span MAY link to the creation
|
For each message it accounts for, the "Settle" span MAY link to the creation
|
||||||
context of the message.
|
context of the message.
|
||||||
|
|
||||||
|
##### Message creation context as parent of "Process" span
|
||||||
|
|
||||||
|
Exclusively for single messages scenarios, the "Process" span MAY
|
||||||
|
use the message's creation context as its parent, thus achieving a direct
|
||||||
|
parent-child relationship between producer and consumer(s).
|
||||||
|
Instrumentations SHOULD document whether they use the message creation context
|
||||||
|
as a parent for "Process" spans and MAY provide configuration options
|
||||||
|
allowing users to control this behavior.
|
||||||
|
|
||||||
|
It is NOT RECOMMENDED to use the message creation context as the parent of "Process"
|
||||||
|
spans (by default) if processing happens in the scope of another span.
|
||||||
|
|
||||||
|
If instrumentation use the message creation context as the parent for "Process"
|
||||||
|
spans in the scope of another valid ambient context, they SHOULD add the
|
||||||
|
ambient context as a link on the "Process" span to preserve the correlation
|
||||||
|
between message processing and that context.
|
||||||
|
|
||||||
|
For example, a messaging broker pushes messages over HTTP to a consumer
|
||||||
|
application which has HTTP server and messaging instrumentations enabled.
|
||||||
|
|
||||||
|
The messaging instrumentation would create the "Process" span following
|
||||||
|
one of these possible approaches:
|
||||||
|
|
||||||
|
- "Process" span is a child of the HTTP server span context and has a link
|
||||||
|
to the message creation context. This is the default behavior.
|
||||||
|
|
||||||
|
- "Process" span is a child of the message creation context and has two links:
|
||||||
|
one to the message creation context and another one to HTTP server span context.
|
||||||
|
This is an opt-in behavior.
|
||||||
|
|
||||||
## Messaging attributes
|
## Messaging attributes
|
||||||
|
|
||||||
Messaging attributes are organized into the following namespaces:
|
Messaging attributes are organized into the following namespaces:
|
||||||
|
|
@ -467,17 +512,19 @@ flowchart LR;
|
||||||
R2[Span Process A 2]
|
R2[Span Process A 2]
|
||||||
end
|
end
|
||||||
P-. link .-R1;
|
P-. link .-R1;
|
||||||
|
P-- parent -->R1;
|
||||||
P-. link .-R2;
|
P-. link .-R2;
|
||||||
|
P-- parent -->R2;
|
||||||
|
|
||||||
classDef normal fill:green
|
classDef normal fill:green
|
||||||
class P,R1,R2 normal
|
class P,R1,R2 normal
|
||||||
linkStyle 0,1 color:green,stroke:green
|
linkStyle 0,1,2,3 color:green,stroke:green
|
||||||
```
|
```
|
||||||
|
|
||||||
| Field or Attribute | Span Publish A | Span Process A 1| Span Process A 2 |
|
| Field or Attribute | Span Publish A | Span Process A 1| Span Process A 2 |
|
||||||
|-|-|-|-|
|
|-|-|-|-|
|
||||||
| Span name | `publish T` | `consume T` | `consume T` |
|
| Span name | `publish T` | `consume T` | `consume T` |
|
||||||
| Parent | | | |
|
| Parent (optional) | | `publish T` | `publish T` |
|
||||||
| Links | | `publish T` | `publish T` |
|
| Links | | `publish T` | `publish T` |
|
||||||
| SpanKind | `PRODUCER` | `CONSUMER` | `CONSUMER` |
|
| SpanKind | `PRODUCER` | `CONSUMER` | `CONSUMER` |
|
||||||
| `server.address` | `"ms"` | `"ms"` | `"ms"` |
|
| `server.address` | `"ms"` | `"ms"` | `"ms"` |
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue