Skip to content

Refactor RabbitMQ test sample #6778

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Mar 19, 2025
Merged

Conversation

andrewlock
Copy link
Member

Summary of changes

  • Refactor RabbitMQ sample to reduce duplication
  • Update manual spans to make hierarchy clearer and deterministic in snapshots

Reason for change

Was trying to debug a failure in #6753 and the snapshots were making it too confusing

Implementation details

  • Created a RabbitMQ "Helper" that wraps the differences in APIs between version
    • The critical thing is that the v7 APIs are all async and the previous version are all sync
    • Previously we duplicated large amounts of code - this creates a helper to encapsulate the differences
    • ✅ Ran the snapshots at this point for all supported versions, and confirmed that they still passed
  • Updated the manual spans to make sure each one is unique
  • Updated all the snapshots

Test coverage

The coverage is the same, the samples are just refactored and the snapshots updated.

Other details

Previously, the top-level spans were all identical, and therefor the sorting in the snapshots was non-deterministic:

image

After this PR, the manual root spans are all unique

image

Prerequisite for

@andrewlock andrewlock added area:tracer The core tracer library (Datadog.Trace, does not include OpenTracing, native code, or integrations) area:tests unit tests, integration tests area:integrations labels Mar 19, 2025
@andrewlock andrewlock requested review from a team as code owners March 19, 2025 14:52
Copy link
Contributor

Snapshots difference summary

The following differences have been observed in committed snapshots. It is meant to help the reviewer.
The diff is simplistic, so please check some files anyway while we improve it.

3 occurrences of :

-    Name: Program.PublishAndGetDefault(useDefaultQueue: False),
-    Resource: Program.PublishAndGetDefault(useDefaultQueue: False),
+    Name: Program.PublishAndGetDefault(ExternalExplicit, useDefaultQueue: False),
+    Resource: Program.PublishAndGetDefault(ExternalExplicit, useDefaultQueue: False),

3 occurrences of :

-    TraceId: Id_11,
-    SpanId: Id_12,
-    Name: Program.PublishAndGetDefault(useDefaultQueue: False),
-    Resource: Program.PublishAndGetDefault(useDefaultQueue: False),
-    Service: Samples.RabbitMQ,
+    TraceId: Id_9,
+    SpanId: Id_11,
+    Name: amqp.command,
+    Resource: basic.get test-queue-name,
+    Service: Samples.RabbitMQ-rabbitmq,
+    Type: queue,
+    ParentId: Id_10,
[...]
+      amqp.command: basic.get,
+      amqp.queue: test-queue-name,
+      component: RabbitMQ,
[...]
-      version: 1.0.0
+      span.kind: consumer,
+      _dd.base_service: Samples.RabbitMQ
[...]
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      _dd.top_level: 1.0
[...]
-    TraceId: Id_13,
-    SpanId: Id_14,
-    Name: Program.PublishAndGetDefault(useDefaultQueue: False),
-    Resource: Program.PublishAndGetDefault(useDefaultQueue: False),
-    Service: Samples.RabbitMQ,
+    TraceId: Id_9,
+    SpanId: Id_12,
+    Name: amqp.command,
+    Resource: basic.publish test-exchange-name -> test-routing-key,
+    Service: Samples.RabbitMQ-rabbitmq,
+    Type: queue,
+    ParentId: Id_10,
[...]
+      amqp.command: basic.publish,
+      amqp.exchange: test-exchange-name,
+      amqp.routing_key: test-routing-key,
+      component: RabbitMQ,
[...]
+      message.size: 80,
+      out.host: rabbitmq,
[...]
-      version: 1.0.0
+      span.kind: producer,
+      _dd.base_service: Samples.RabbitMQ
[...]
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      _dd.top_level: 1.0
[...]
-    TraceId: Id_15,
-    SpanId: Id_16,
-    Name: Program.PublishAndGetDefault(useDefaultQueue: False),
-    Resource: Program.PublishAndGetDefault(useDefaultQueue: False),
-    Service: Samples.RabbitMQ,
+    TraceId: Id_9,
+    SpanId: Id_13,
+    Name: amqp.command,
+    Resource: exchange.declare,
+    Service: Samples.RabbitMQ-rabbitmq,
+    Type: queue,
+    ParentId: Id_10,
[...]
+      amqp.command: exchange.declare,
+      amqp.exchange: test-exchange-name,
+      component: RabbitMQ,
[...]
+      out.host: rabbitmq,
[...]
-      version: 1.0.0
+      span.kind: client,
+      _dd.base_service: Samples.RabbitMQ
[...]
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      _dd.top_level: 1.0
[...]
-    SpanId: Id_17,
+    SpanId: Id_14,
[...]
-    Resource: basic.get test-queue-name,
+    Resource: queue.bind,
[...]
-      amqp.command: basic.get,
+      amqp.command: queue.bind,
+      amqp.exchange: test-exchange-name,
[...]
+      amqp.routing_key: test-routing-key,
[...]
+      out.host: rabbitmq,
[...]
-      span.kind: consumer,
+      span.kind: client,

3 occurrences of :

-    TraceId: Id_11,
-    SpanId: Id_18,
+    TraceId: Id_9,
+    SpanId: Id_15,
[...]
-    Resource: basic.get test-queue-name,
+    Resource: queue.declare,
[...]
-    ParentId: Id_12,
+    ParentId: Id_10,
[...]
-      amqp.command: basic.get,
+      amqp.command: queue.declare,
[...]
+      out.host: rabbitmq,
[...]
-      span.kind: consumer,
+      span.kind: client,

3 occurrences of :

-    TraceId: Id_13,
-    SpanId: Id_19,
+    TraceId: Id_9,
+    SpanId: Id_16,
[...]
-    ParentId: Id_14,
+    ParentId: Id_12,
[...]
+      message.size: 80,
[...]
-      _dd.top_level: 1.0
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_15,
-    SpanId: Id_20,
+    TraceId: Id_17,
+    SpanId: Id_18,
+    Name: Program.PublishAndGetDefault(ExternalExplicit, useDefaultQueue: True),
+    Resource: Program.PublishAndGetDefault(ExternalExplicit, useDefaultQueue: True),
+    Service: Samples.RabbitMQ,
+    Tags: {
+      env: integration_tests,
+      language: dotnet,
+      runtime-id: Guid_1,
+      version: 1.0.0
+    },
+    Metrics: {
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
+    }
+  },
+  {
+    TraceId: Id_17,
+    SpanId: Id_19,
[...]
-    Resource: basic.get test-queue-name,
+    Resource: basic.get <generated>,
[...]
-    ParentId: Id_16,
+    ParentId: Id_18,
[...]
-      amqp.queue: test-queue-name,
+      amqp.queue: AmqQueue_1

3 occurrences of :

-    TraceId: Id_9,
-    SpanId: Id_21,
+    TraceId: Id_17,
+    SpanId: Id_20,
[...]
-    Resource: basic.publish test-exchange-name -> test-routing-key,
+    Resource: basic.publish <default> -> <generated>,
[...]
-    ParentId: Id_10,
+    ParentId: Id_18,
[...]
-      amqp.exchange: test-exchange-name,
-      amqp.routing_key: test-routing-key,
+      amqp.exchange: ,
+      amqp.routing_key: AmqQueue_1
[...]
-      message.size: 62,
+      message.size: 79,

3 occurrences of :

-    TraceId: Id_11,
-    SpanId: Id_22,
+    TraceId: Id_17,
+    SpanId: Id_21,
[...]
-    Resource: basic.publish test-exchange-name -> test-routing-key,
+    Resource: queue.declare,
[...]
-    ParentId: Id_12,
+    ParentId: Id_18,
[...]
-      amqp.command: basic.publish,
-      amqp.exchange: test-exchange-name,
-      amqp.routing_key: test-routing-key,
+      amqp.command: queue.declare,
+      amqp.queue: ,
[...]
-      message.size: 62,
[...]
-      span.kind: producer,
+      span.kind: client,

3 occurrences of :

-    TraceId: Id_13,
-    SpanId: Id_23,
+    TraceId: Id_17,
+    SpanId: Id_22,
[...]
-    Resource: basic.publish test-exchange-name -> test-routing-key,
+    Resource: basic.get <generated>,
[...]
-    ParentId: Id_14,
+    ParentId: Id_20,
[...]
-      amqp.command: basic.publish,
-      amqp.exchange: test-exchange-name,
-      amqp.routing_key: test-routing-key,
+      amqp.command: basic.get,
+      amqp.queue: AmqQueue_1
[...]
-      message.size: 62,
-      out.host: rabbitmq,
+      message.size: 79,
[...]
-      span.kind: producer,
+      span.kind: consumer,
[...]
-      _dd.top_level: 1.0
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_15,
+    TraceId: Id_23,
[...]
-    Name: amqp.command,
-    Resource: basic.publish test-exchange-name -> test-routing-key,
-    Service: Samples.RabbitMQ-rabbitmq,
-    Type: queue,
-    ParentId: Id_16,
+    Name: Program.PublishAndGetDefault(ExternalImplicit, useDefaultQueue: False),
+    Resource: Program.PublishAndGetDefault(ExternalImplicit, useDefaultQueue: False),
+    Service: Samples.RabbitMQ,
[...]
-      amqp.command: basic.publish,
-      amqp.exchange: test-exchange-name,
-      amqp.routing_key: test-routing-key,
-      component: RabbitMQ,
[...]
-      message.size: 62,
-      out.host: rabbitmq,
[...]
-      span.kind: producer,
-      _dd.base_service: Samples.RabbitMQ
+      version: 1.0.0
[...]
-      _dd.top_level: 1.0
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_9,
+    TraceId: Id_23,
[...]
-    Resource: exchange.declare,
+    Resource: basic.get test-queue-name,
[...]
-    ParentId: Id_10,
+    ParentId: Id_24,
[...]
-      amqp.command: exchange.declare,
-      amqp.exchange: test-exchange-name,
+      amqp.command: basic.get,
+      amqp.queue: test-queue-name,
[...]
-      out.host: rabbitmq,
[...]
-      span.kind: client,
+      span.kind: consumer,

3 occurrences of :

-    TraceId: Id_11,
+    TraceId: Id_23,
[...]
-    Resource: exchange.declare,
+    Resource: basic.publish test-exchange-name -> test-routing-key,
[...]
-    ParentId: Id_12,
+    ParentId: Id_24,
[...]
-      amqp.command: exchange.declare,
+      amqp.command: basic.publish,
[...]
+      amqp.routing_key: test-routing-key,
[...]
+      message.size: 80,
[...]
-      span.kind: client,
+      span.kind: producer,

3 occurrences of :

-    TraceId: Id_13,
+    TraceId: Id_23,
[...]
-    ParentId: Id_14,
+    ParentId: Id_24,

3 occurrences of :

-    TraceId: Id_15,
+    TraceId: Id_23,
[...]
-    Resource: exchange.declare,
+    Resource: queue.bind,
[...]
-    ParentId: Id_16,
+    ParentId: Id_24,
[...]
-      amqp.command: exchange.declare,
+      amqp.command: queue.bind,
[...]
+      amqp.queue: test-queue-name,
+      amqp.routing_key: test-routing-key,

3 occurrences of :

-    TraceId: Id_9,
+    TraceId: Id_23,
[...]
-    Resource: queue.bind,
+    Resource: queue.declare,
[...]
-    ParentId: Id_10,
+    ParentId: Id_24,
[...]
-      amqp.command: queue.bind,
-      amqp.exchange: test-exchange-name,
+      amqp.command: queue.declare,
[...]
-      amqp.routing_key: test-routing-key,

3 occurrences of :

-    TraceId: Id_11,
+    TraceId: Id_23,
[...]
-    Resource: queue.bind,
+    Resource: basic.get test-queue-name,
[...]
-    ParentId: Id_12,
+    ParentId: Id_26,
[...]
-      amqp.command: queue.bind,
-      amqp.exchange: test-exchange-name,
+      amqp.command: basic.get,
[...]
-      amqp.routing_key: test-routing-key,
[...]
-      out.host: rabbitmq,
+      message.size: 80,
[...]
-      span.kind: client,
+      span.kind: consumer,
[...]
-      _dd.top_level: 1.0
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_13,
-    SpanId: Id_31,
-    Name: amqp.command,
-    Resource: queue.bind,
-    Service: Samples.RabbitMQ-rabbitmq,
-    Type: queue,
-    ParentId: Id_14,
+    TraceId: Id_31,
+    SpanId: Id_32,
+    Name: Program.PublishAndGetDefault(ExternalImplicit, useDefaultQueue: True),
+    Resource: Program.PublishAndGetDefault(ExternalImplicit, useDefaultQueue: True),
+    Service: Samples.RabbitMQ,
[...]
-      amqp.command: queue.bind,
-      amqp.exchange: test-exchange-name,
-      amqp.queue: test-queue-name,
-      amqp.routing_key: test-routing-key,
-      component: RabbitMQ,
[...]
-      out.host: rabbitmq,
[...]
-      span.kind: client,
-      _dd.base_service: Samples.RabbitMQ
+      version: 1.0.0
[...]
-      _dd.top_level: 1.0
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_15,
-    SpanId: Id_32,
+    TraceId: Id_31,
+    SpanId: Id_33,
[...]
-    Resource: queue.bind,
+    Resource: basic.get <generated>,
[...]
-    ParentId: Id_16,
+    ParentId: Id_32,
[...]
-      amqp.command: queue.bind,
-      amqp.exchange: test-exchange-name,
-      amqp.queue: test-queue-name,
-      amqp.routing_key: test-routing-key,
+      amqp.command: basic.get,
+      amqp.queue: AmqQueue_4
[...]
-      out.host: rabbitmq,
[...]
-      span.kind: client,
+      span.kind: consumer,

3 occurrences of :

-    TraceId: Id_9,
-    SpanId: Id_33,
+    TraceId: Id_31,
+    SpanId: Id_34,
[...]
-    Resource: queue.declare,
+    Resource: basic.publish <default> -> <generated>,
[...]
-    ParentId: Id_10,
+    ParentId: Id_32,
[...]
-      amqp.command: queue.declare,
-      amqp.queue: test-queue-name,
+      amqp.command: basic.publish,
+      amqp.exchange: ,
+      amqp.routing_key: AmqQueue_4
[...]
+      message.size: 79,
[...]
-      span.kind: client,
+      span.kind: producer,

3 occurrences of :

-    TraceId: Id_11,
-    SpanId: Id_34,
+    TraceId: Id_31,
+    SpanId: Id_35,
[...]
-    ParentId: Id_12,
+    ParentId: Id_32,
[...]
-      amqp.queue: test-queue-name,
+      amqp.queue: ,

3 occurrences of :

-    TraceId: Id_13,
-    SpanId: Id_35,
+    TraceId: Id_31,
+    SpanId: Id_36,
[...]
-    Resource: queue.declare,
+    Resource: basic.get <generated>,
[...]
-    ParentId: Id_14,
+    ParentId: Id_34,
[...]
-      amqp.command: queue.declare,
-      amqp.queue: test-queue-name,
+      amqp.command: basic.get,
+      amqp.queue: AmqQueue_4
[...]
-      out.host: rabbitmq,
+      message.size: 79,
[...]
-      span.kind: client,
+      span.kind: consumer,
[...]
-      _dd.top_level: 1.0
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_15,
-    SpanId: Id_36,
-    Name: amqp.command,
-    Resource: queue.declare,
-    Service: Samples.RabbitMQ-rabbitmq,
-    Type: queue,
-    ParentId: Id_16,
+    TraceId: Id_37,
+    SpanId: Id_38,
+    Name: Program.PublishAndGetDefault(InternalAsyncDerived, useDefaultQueue: False),
+    Resource: Program.PublishAndGetDefault(InternalAsyncDerived, useDefaultQueue: False),
+    Service: Samples.RabbitMQ,
[...]
-      amqp.command: queue.declare,
-      amqp.queue: test-queue-name,
-      component: RabbitMQ,
[...]
-      out.host: rabbitmq,
[...]
-      span.kind: client,
-      _dd.base_service: Samples.RabbitMQ
+      version: 1.0.0
[...]
-      _dd.top_level: 1.0
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_9,
-    SpanId: Id_37,
+    TraceId: Id_37,
+    SpanId: Id_39,
[...]
-    ParentId: Id_21,
+    ParentId: Id_38,
[...]
-      message.size: 62,
[...]
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      _dd.top_level: 1.0
[...]
-    TraceId: Id_11,
-    SpanId: Id_38,
+    TraceId: Id_37,
+    SpanId: Id_40,
[...]
-    Resource: basic.get test-queue-name,
+    Resource: basic.publish test-exchange-name -> test-routing-key,
[...]
-    ParentId: Id_22,
+    ParentId: Id_38,
[...]
-      amqp.command: basic.get,
-      amqp.queue: test-queue-name,
+      amqp.command: basic.publish,
+      amqp.exchange: test-exchange-name,
+      amqp.routing_key: test-routing-key,
[...]
-      message.size: 62,
+      message.size: 84,
+      out.host: rabbitmq,
[...]
-      span.kind: consumer,
+      span.kind: producer,
[...]
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      _dd.top_level: 1.0
[...]
-    TraceId: Id_13,
-    SpanId: Id_39,
+    TraceId: Id_37,
+    SpanId: Id_41,
[...]
-    Resource: basic.get test-queue-name,
+    Resource: exchange.declare,
[...]
-    ParentId: Id_23,
+    ParentId: Id_38,
[...]
-      amqp.command: basic.get,
-      amqp.queue: test-queue-name,
+      amqp.command: exchange.declare,
+      amqp.exchange: test-exchange-name,
[...]
-      message.size: 62,
+      out.host: rabbitmq,
[...]
-      span.kind: consumer,
+      span.kind: client,
[...]
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      _dd.top_level: 1.0
[...]
-    TraceId: Id_15,
-    SpanId: Id_40,
+    TraceId: Id_37,
+    SpanId: Id_42,
[...]
-    Resource: basic.get test-queue-name,
+    Resource: queue.bind,
[...]
-    ParentId: Id_24,
+    ParentId: Id_38,
[...]
-      amqp.command: basic.get,
+      amqp.command: queue.bind,
+      amqp.exchange: test-exchange-name,
[...]
+      amqp.routing_key: test-routing-key,
[...]
-      message.size: 62,
+      out.host: rabbitmq,
[...]
-      span.kind: consumer,
+      span.kind: client,
[...]
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      _dd.top_level: 1.0
[...]
-    TraceId: Id_41,
-    SpanId: Id_42,
-    Name: Program.PublishAndGetDefault(useDefaultQueue: True),
-    Resource: Program.PublishAndGetDefault(useDefaultQueue: True),
-    Service: Samples.RabbitMQ,
+    TraceId: Id_37,
+    SpanId: Id_43,
+    Name: amqp.command,
+    Resource: queue.declare,
+    Service: Samples.RabbitMQ-rabbitmq,
+    Type: queue,
+    ParentId: Id_38,
[...]
+      amqp.command: queue.declare,
+      amqp.queue: test-queue-name,
+      component: RabbitMQ,
[...]
+      out.host: rabbitmq,
[...]
-      version: 1.0.0
+      span.kind: client,
+      _dd.base_service: Samples.RabbitMQ
[...]
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      _dd.top_level: 1.0
[...]
-    TraceId: Id_43,
+    TraceId: Id_37,
[...]
-    Name: Program.PublishAndGetDefault(useDefaultQueue: True),
-    Resource: Program.PublishAndGetDefault(useDefaultQueue: True),
-    Service: Samples.RabbitMQ,
+    Name: amqp.command,
+    Resource: basic.get test-queue-name,
+    Service: Samples.RabbitMQ-rabbitmq,
+    Type: queue,
+    ParentId: Id_40,
[...]
+      amqp.command: basic.get,
+      amqp.queue: test-queue-name,
+      component: RabbitMQ,
[...]
+      message.size: 84,
[...]
-      version: 1.0.0
+      span.kind: consumer,
+      _dd.base_service: Samples.RabbitMQ

3 occurrences of :

-    Name: Program.PublishAndGetDefault(useDefaultQueue: True),
-    Resource: Program.PublishAndGetDefault(useDefaultQueue: True),
-    Service: Samples.RabbitMQ,
-    Tags: {
-      env: integration_tests,
-      language: dotnet,
-      runtime-id: Guid_1,
-      version: 1.0.0
-    },
-    Metrics: {
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
-    }
-  },
-  {
-    TraceId: Id_47,
-    SpanId: Id_48,
-    Name: Program.PublishAndGetDefault(useDefaultQueue: True),
-    Resource: Program.PublishAndGetDefault(useDefaultQueue: True),
+    Name: Program.PublishAndGetDefault(InternalAsyncDerived, useDefaultQueue: True),
+    Resource: Program.PublishAndGetDefault(InternalAsyncDerived, useDefaultQueue: True),

3 occurrences of :

-    TraceId: Id_41,
-    SpanId: Id_49,
+    TraceId: Id_45,
+    SpanId: Id_47,
[...]
-    ParentId: Id_42,
+    ParentId: Id_46,
[...]
-      amqp.queue: AmqQueue_1
+      amqp.queue: AmqQueue_7

3 occurrences of :

-    TraceId: Id_43,
-    SpanId: Id_50,
+    TraceId: Id_45,
+    SpanId: Id_48,
[...]
-    Resource: basic.get <generated>,
+    Resource: basic.publish <default> -> <generated>,
[...]
-    ParentId: Id_44,
+    ParentId: Id_46,
[...]
-      amqp.command: basic.get,
-      amqp.queue: AmqQueue_2
+      amqp.command: basic.publish,
+      amqp.exchange: ,
+      amqp.routing_key: AmqQueue_7
[...]
+      message.size: 83,
+      out.host: rabbitmq,
[...]
-      span.kind: consumer,
+      span.kind: producer,

3 occurrences of :

-    SpanId: Id_51,
+    SpanId: Id_49,
[...]
-    Resource: basic.get <generated>,
+    Resource: queue.declare,
[...]
-      amqp.command: basic.get,
-      amqp.queue: AmqQueue_3
+      amqp.command: queue.declare,
+      amqp.queue: ,
[...]
+      out.host: rabbitmq,
[...]
-      span.kind: consumer,
+      span.kind: client,

3 occurrences of :

-    TraceId: Id_47,
-    SpanId: Id_52,
+    TraceId: Id_45,
+    SpanId: Id_50,

3 occurrences of :

-      amqp.queue: AmqQueue_4
+      amqp.queue: AmqQueue_7
[...]
+      message.size: 83,
[...]
-      _dd.top_level: 1.0
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
+    }
+  },
+  {
+    TraceId: Id_51,
+    SpanId: Id_52,
+    Name: Program.PublishAndGetDefault(InternalSyncDerived, useDefaultQueue: False),
+    Resource: Program.PublishAndGetDefault(InternalSyncDerived, useDefaultQueue: False),
+    Service: Samples.RabbitMQ,
+    Tags: {
+      env: integration_tests,
+      language: dotnet,
+      runtime-id: Guid_1,
+      version: 1.0.0
+    },
+    Metrics: {
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_41,
+    TraceId: Id_51,
[...]
-    Resource: basic.publish <default> -> <generated>,
+    Resource: basic.get test-queue-name,
[...]
-    ParentId: Id_42,
+    ParentId: Id_52,
[...]
-      amqp.command: basic.publish,
-      amqp.exchange: ,
-      amqp.routing_key: AmqQueue_1
+      amqp.command: basic.get,
+      amqp.queue: test-queue-name,
[...]
-      message.size: 61,
-      out.host: rabbitmq,
[...]
-      span.kind: producer,
+      span.kind: consumer,

3 occurrences of :

-    TraceId: Id_43,
+    TraceId: Id_51,
[...]
-    Resource: basic.publish <default> -> <generated>,
+    Resource: basic.publish test-exchange-name -> test-routing-key,
[...]
-    ParentId: Id_44,
+    ParentId: Id_52,
[...]
-      amqp.exchange: ,
-      amqp.routing_key: AmqQueue_2
+      amqp.exchange: test-exchange-name,
+      amqp.routing_key: test-routing-key,
[...]
-      message.size: 61,
+      message.size: 83,

3 occurrences of :

-    TraceId: Id_45,
+    TraceId: Id_51,
[...]
-    Resource: basic.publish <default> -> <generated>,
+    Resource: exchange.declare,
[...]
-    ParentId: Id_46,
+    ParentId: Id_52,
[...]
-      amqp.command: basic.publish,
-      amqp.exchange: ,
-      amqp.routing_key: AmqQueue_3
+      amqp.command: exchange.declare,
+      amqp.exchange: test-exchange-name,
[...]
-      message.size: 61,
[...]
-      span.kind: producer,
+      span.kind: client,

3 occurrences of :

-    TraceId: Id_47,
+    TraceId: Id_51,
[...]
-    Resource: basic.publish <default> -> <generated>,
+    Resource: queue.bind,
[...]
-    ParentId: Id_48,
+    ParentId: Id_52,
[...]
-      amqp.command: basic.publish,
-      amqp.exchange: ,
-      amqp.routing_key: AmqQueue_4
+      amqp.command: queue.bind,
+      amqp.exchange: test-exchange-name,
+      amqp.queue: test-queue-name,
+      amqp.routing_key: test-routing-key,
[...]
-      message.size: 61,
[...]
-      span.kind: producer,
+      span.kind: client,

3 occurrences of :

-    TraceId: Id_41,
+    TraceId: Id_51,
[...]
-    ParentId: Id_42,
+    ParentId: Id_52,
[...]
-      amqp.queue: ,
+      amqp.queue: test-queue-name,

3 occurrences of :

-    TraceId: Id_43,
+    TraceId: Id_51,
[...]
-    Resource: queue.declare,
+    Resource: basic.get test-queue-name,
[...]
-    ParentId: Id_44,
+    ParentId: Id_54,
[...]
-      amqp.command: queue.declare,
-      amqp.queue: ,
+      amqp.command: basic.get,
+      amqp.queue: test-queue-name,
[...]
-      out.host: rabbitmq,
+      message.size: 83,
[...]
-      span.kind: client,
+      span.kind: consumer,
[...]
-      _dd.top_level: 1.0
-    }
-  },
-  {
-    TraceId: Id_45,
-    SpanId: Id_59,
-    Name: amqp.command,
-    Resource: queue.declare,
-    Service: Samples.RabbitMQ-rabbitmq,
-    Type: queue,
-    ParentId: Id_46,
-    Tags: {
-      amqp.command: queue.declare,
-      amqp.queue: ,
-      component: RabbitMQ,
-      env: integration_tests,
-      language: dotnet,
-      out.host: rabbitmq,
-      runtime-id: Guid_1,
-      span.kind: client,
-      _dd.base_service: Samples.RabbitMQ
-    },
-    Metrics: {
-      _dd.top_level: 1.0
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_47,
+    TraceId: Id_59,
[...]
-    Name: amqp.command,
-    Resource: queue.declare,
-    Service: Samples.RabbitMQ-rabbitmq,
-    Type: queue,
-    ParentId: Id_48,
+    Name: Program.PublishAndGetDefault(InternalSyncDerived, useDefaultQueue: True),
+    Resource: Program.PublishAndGetDefault(InternalSyncDerived, useDefaultQueue: True),
+    Service: Samples.RabbitMQ,
[...]
-      amqp.command: queue.declare,
-      amqp.queue: ,
-      component: RabbitMQ,
[...]
-      out.host: rabbitmq,
[...]
-      span.kind: client,
-      _dd.base_service: Samples.RabbitMQ
+      version: 1.0.0
[...]
-      _dd.top_level: 1.0
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_41,
+    TraceId: Id_59,
[...]
-    ParentId: Id_53,
+    ParentId: Id_60,
[...]
-      amqp.queue: AmqQueue_1
+      amqp.queue: AmqQueue_10
[...]
-      message.size: 61,
[...]
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      _dd.top_level: 1.0
[...]
-    TraceId: Id_43,
+    TraceId: Id_59,
[...]
-    Resource: basic.get <generated>,
+    Resource: basic.publish <default> -> <generated>,
[...]
-    ParentId: Id_54,
+    ParentId: Id_60,
[...]
-      amqp.command: basic.get,
-      amqp.queue: AmqQueue_2
+      amqp.command: basic.publish,
+      amqp.exchange: ,
+      amqp.routing_key: AmqQueue_10
[...]
-      message.size: 61,
+      message.size: 82,
+      out.host: rabbitmq,
[...]
-      span.kind: consumer,
+      span.kind: producer,
[...]
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      _dd.top_level: 1.0
[...]
-    TraceId: Id_45,
+    TraceId: Id_59,
[...]
-    Resource: basic.get <generated>,
+    Resource: queue.declare,
[...]
-    ParentId: Id_55,
+    ParentId: Id_60,
[...]
-      amqp.command: basic.get,
-      amqp.queue: AmqQueue_3
+      amqp.command: queue.declare,
+      amqp.queue: ,
[...]
-      message.size: 61,
+      out.host: rabbitmq,
[...]
-      span.kind: consumer,
+      span.kind: client,
[...]
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      _dd.top_level: 1.0
[...]
-    TraceId: Id_47,
+    TraceId: Id_59,
[...]
-    ParentId: Id_56,
+    ParentId: Id_62,
[...]
-      amqp.queue: AmqQueue_4
+      amqp.queue: AmqQueue_10
[...]
-      message.size: 61,
+      message.size: 82,

3 occurrences of :

-    Name: PublishToConsumer(),
-    Resource: PublishToConsumer(),
+    Name: PublishToConsumer(ExternalExplicit, i: 0),
+    Resource: PublishToConsumer(ExternalExplicit, i: 0),

3 occurrences of :

-    TraceId: Id_67,
-    SpanId: Id_68,
-    Name: PublishToConsumer(),
-    Resource: PublishToConsumer(),
-    Service: Samples.RabbitMQ,
+    TraceId: Id_65,
+    SpanId: Id_67,
+    Name: amqp.command,
+    Resource: basic.publish <default> -> hello,
+    Service: Samples.RabbitMQ-rabbitmq,
+    Type: queue,
+    ParentId: Id_66,
[...]
+      amqp.command: basic.publish,
+      amqp.exchange: ,
+      amqp.routing_key: hello,
+      component: RabbitMQ,
[...]
+      message.size: 17,
+      out.host: rabbitmq,
[...]
-      version: 1.0.0
+      span.kind: producer,
+      _dd.base_service: Samples.RabbitMQ
[...]
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      _dd.top_level: 1.0
[...]
-    TraceId: Id_69,
-    SpanId: Id_70,
-    Name: PublishToConsumer(),
-    Resource: PublishToConsumer(),
-    Service: Samples.RabbitMQ,
+    TraceId: Id_65,
+    SpanId: Id_68,
+    Name: amqp.command,
+    Resource: basic.deliver,
+    Service: Samples.RabbitMQ-rabbitmq,
+    Type: queue,
+    ParentId: Id_67,
[...]
+      amqp.command: basic.deliver,
+      amqp.exchange: ,
+      amqp.queue: hello,
+      amqp.routing_key: hello,
+      component: RabbitMQ,
[...]
+      message.size: 17,
[...]
-      version: 1.0.0
+      span.kind: consumer,
+      _dd.base_service: Samples.RabbitMQ

3 occurrences of :

-    TraceId: Id_71,
-    SpanId: Id_72,
-    Name: PublishToConsumer(),
-    Resource: PublishToConsumer(),
+    TraceId: Id_65,
+    SpanId: Id_69,
+    Name: consumer.Received event,
+    Resource: consumer.Received event,
[...]
+    ParentId: Id_67,

3 occurrences of :

-    TraceId: Id_73,
-    SpanId: Id_74,
-    Name: PublishToConsumer(),
-    Resource: PublishToConsumer(),
+    TraceId: Id_70,
+    SpanId: Id_71,
+    Name: PublishToConsumer(ExternalExplicit, i: 1),
+    Resource: PublishToConsumer(ExternalExplicit, i: 1),

3 occurrences of :

-    TraceId: Id_75,
-    SpanId: Id_76,
-    Name: PublishToConsumer(),
-    Resource: PublishToConsumer(),
-    Service: Samples.RabbitMQ,
+    TraceId: Id_70,
+    SpanId: Id_72,
+    Name: amqp.command,
+    Resource: basic.publish <default> -> hello,
+    Service: Samples.RabbitMQ-rabbitmq,
+    Type: queue,
+    ParentId: Id_71,
[...]
+      amqp.command: basic.publish,
+      amqp.exchange: ,
+      amqp.routing_key: hello,
+      component: RabbitMQ,
[...]
+      message.size: 17,
+      out.host: rabbitmq,
[...]
-      version: 1.0.0
+      span.kind: producer,
+      _dd.base_service: Samples.RabbitMQ
[...]
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      _dd.top_level: 1.0
[...]
-    TraceId: Id_77,
-    SpanId: Id_78,
-    Name: PublishToConsumer(),
-    Resource: PublishToConsumer(),
-    Service: Samples.RabbitMQ,
+    TraceId: Id_70,
+    SpanId: Id_73,
+    Name: amqp.command,
+    Resource: basic.deliver,
+    Service: Samples.RabbitMQ-rabbitmq,
+    Type: queue,
+    ParentId: Id_72,
[...]
+      amqp.command: basic.deliver,
+      amqp.exchange: ,
+      amqp.queue: hello,
+      amqp.routing_key: hello,
+      component: RabbitMQ,
[...]
+      message.size: 17,
[...]
-      version: 1.0.0
+      span.kind: consumer,
+      _dd.base_service: Samples.RabbitMQ

3 occurrences of :

-    TraceId: Id_79,
-    SpanId: Id_80,
-    Name: PublishToConsumer(),
-    Resource: PublishToConsumer(),
+    TraceId: Id_70,
+    SpanId: Id_74,
+    Name: consumer.Received event,
+    Resource: consumer.Received event,
[...]
+    ParentId: Id_72,

3 occurrences of :

-    TraceId: Id_81,
-    SpanId: Id_82,
-    Name: PublishToConsumer(),
-    Resource: PublishToConsumer(),
+    TraceId: Id_75,
+    SpanId: Id_76,
+    Name: PublishToConsumer(ExternalExplicit, i: 2),
+    Resource: PublishToConsumer(ExternalExplicit, i: 2),

3 occurrences of :

-    TraceId: Id_83,
-    SpanId: Id_84,
-    Name: PublishToConsumer(),
-    Resource: PublishToConsumer(),
-    Service: Samples.RabbitMQ,
+    TraceId: Id_75,
+    SpanId: Id_77,
+    Name: amqp.command,
+    Resource: basic.publish <default> -> hello,
+    Service: Samples.RabbitMQ-rabbitmq,
+    Type: queue,
+    ParentId: Id_76,
[...]
+      amqp.command: basic.publish,
+      amqp.exchange: ,
+      amqp.routing_key: hello,
+      component: RabbitMQ,
[...]
+      message.size: 17,
+      out.host: rabbitmq,
[...]
-      version: 1.0.0
+      span.kind: producer,
+      _dd.base_service: Samples.RabbitMQ
[...]
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      _dd.top_level: 1.0
[...]
-    TraceId: Id_85,
-    SpanId: Id_86,
-    Name: PublishToConsumer(),
-    Resource: PublishToConsumer(),
-    Service: Samples.RabbitMQ,
+    TraceId: Id_75,
+    SpanId: Id_78,
+    Name: amqp.command,
+    Resource: basic.deliver,
+    Service: Samples.RabbitMQ-rabbitmq,
+    Type: queue,
+    ParentId: Id_77,
[...]
+      amqp.command: basic.deliver,
+      amqp.exchange: ,
+      amqp.queue: hello,
+      amqp.routing_key: hello,
+      component: RabbitMQ,
[...]
+      message.size: 17,
[...]
-      version: 1.0.0
+      span.kind: consumer,
+      _dd.base_service: Samples.RabbitMQ

3 occurrences of :

-    TraceId: Id_87,
-    SpanId: Id_88,
-    Name: PublishToConsumer(),
-    Resource: PublishToConsumer(),
+    TraceId: Id_75,
+    SpanId: Id_79,
+    Name: consumer.Received event,
+    Resource: consumer.Received event,
[...]
+    ParentId: Id_77,

3 occurrences of :

-    TraceId: Id_65,
-    SpanId: Id_89,
-    Name: amqp.command,
-    Resource: basic.publish <default> -> hello,
-    Service: Samples.RabbitMQ-rabbitmq,
-    Type: queue,
-    ParentId: Id_66,
-    Tags: {
-      amqp.command: basic.publish,
-      amqp.exchange: ,
-      amqp.routing_key: hello,
-      component: RabbitMQ,
-      env: integration_tests,
-      language: dotnet,
-      message.size: 17,
-      out.host: rabbitmq,
-      runtime-id: Guid_1,
-      span.kind: producer,
-      _dd.base_service: Samples.RabbitMQ
-    },
-    Metrics: {
-      _dd.top_level: 1.0
-    }
-  },
-  {
-    TraceId: Id_67,
-    SpanId: Id_90,
-    Name: amqp.command,
-    Resource: basic.publish <default> -> hello,
-    Service: Samples.RabbitMQ-rabbitmq,
-    Type: queue,
-    ParentId: Id_68,
+    TraceId: Id_80,
+    SpanId: Id_81,
+    Name: PublishToConsumer(ExternalImplicit, i: 0),
+    Resource: PublishToConsumer(ExternalImplicit, i: 0),
+    Service: Samples.RabbitMQ,
[...]
-      amqp.command: basic.publish,
-      amqp.exchange: ,
-      amqp.routing_key: hello,
-      component: RabbitMQ,
[...]
-      message.size: 17,
-      out.host: rabbitmq,
[...]
-      span.kind: producer,
-      _dd.base_service: Samples.RabbitMQ
+      version: 1.0.0
[...]
-      _dd.top_level: 1.0
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_69,
-    SpanId: Id_91,
+    TraceId: Id_80,
+    SpanId: Id_82,
[...]
-    ParentId: Id_70,
+    ParentId: Id_81,

3 occurrences of :

-    TraceId: Id_71,
-    SpanId: Id_92,
+    TraceId: Id_80,
+    SpanId: Id_83,
[...]
-    Resource: basic.publish <default> -> hello,
+    Resource: basic.deliver,
[...]
-    ParentId: Id_72,
+    ParentId: Id_82,
[...]
-      amqp.command: basic.publish,
+      amqp.command: basic.deliver,
[...]
+      amqp.queue: hello,
[...]
-      out.host: rabbitmq,
[...]
-      span.kind: producer,
+      span.kind: consumer,
[...]
-      _dd.top_level: 1.0
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_73,
-    SpanId: Id_93,
-    Name: amqp.command,
-    Resource: basic.publish <default> -> hello,
-    Service: Samples.RabbitMQ-rabbitmq,
-    Type: queue,
-    ParentId: Id_74,
+    TraceId: Id_80,
+    SpanId: Id_84,
+    Name: consumer.Received event,
+    Resource: consumer.Received event,
+    Service: Samples.RabbitMQ,
+    ParentId: Id_82,
[...]
-      amqp.command: basic.publish,
-      amqp.exchange: ,
-      amqp.routing_key: hello,
-      component: RabbitMQ,
[...]
-      message.size: 17,
-      out.host: rabbitmq,
[...]
-      span.kind: producer,
-      _dd.base_service: Samples.RabbitMQ
+      version: 1.0.0
[...]
-      _dd.top_level: 1.0
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_75,
-    SpanId: Id_94,
-    Name: amqp.command,
-    Resource: basic.publish <default> -> hello,
-    Service: Samples.RabbitMQ-rabbitmq,
-    Type: queue,
-    ParentId: Id_76,
+    TraceId: Id_85,
+    SpanId: Id_86,
+    Name: PublishToConsumer(ExternalImplicit, i: 1),
+    Resource: PublishToConsumer(ExternalImplicit, i: 1),
+    Service: Samples.RabbitMQ,
[...]
-      amqp.command: basic.publish,
-      amqp.exchange: ,
-      amqp.routing_key: hello,
-      component: RabbitMQ,
[...]
-      message.size: 17,
-      out.host: rabbitmq,
[...]
-      span.kind: producer,
-      _dd.base_service: Samples.RabbitMQ
+      version: 1.0.0
[...]
-      _dd.top_level: 1.0
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_77,
-    SpanId: Id_95,
+    TraceId: Id_85,
+    SpanId: Id_87,
[...]
-    ParentId: Id_78,
+    ParentId: Id_86,

3 occurrences of :

-    TraceId: Id_79,
-    SpanId: Id_96,
+    TraceId: Id_85,
+    SpanId: Id_88,
[...]
-    Resource: basic.publish <default> -> hello,
+    Resource: basic.deliver,
[...]
-    ParentId: Id_80,
+    ParentId: Id_87,
[...]
-      amqp.command: basic.publish,
+      amqp.command: basic.deliver,
[...]
+      amqp.queue: hello,
[...]
-      out.host: rabbitmq,
[...]
-      span.kind: producer,
+      span.kind: consumer,
[...]
-      _dd.top_level: 1.0
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_81,
-    SpanId: Id_97,
-    Name: amqp.command,
-    Resource: basic.publish <default> -> hello,
-    Service: Samples.RabbitMQ-rabbitmq,
-    Type: queue,
-    ParentId: Id_82,
+    TraceId: Id_85,
+    SpanId: Id_89,
+    Name: consumer.Received event,
+    Resource: consumer.Received event,
+    Service: Samples.RabbitMQ,
+    ParentId: Id_87,
[...]
-      amqp.command: basic.publish,
-      amqp.exchange: ,
-      amqp.routing_key: hello,
-      component: RabbitMQ,
[...]
-      message.size: 17,
-      out.host: rabbitmq,
[...]
-      span.kind: producer,
-      _dd.base_service: Samples.RabbitMQ
+      version: 1.0.0
[...]
-      _dd.top_level: 1.0
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_83,
-    SpanId: Id_98,
-    Name: amqp.command,
-    Resource: basic.publish <default> -> hello,
-    Service: Samples.RabbitMQ-rabbitmq,
-    Type: queue,
-    ParentId: Id_84,
+    TraceId: Id_90,
+    SpanId: Id_91,
+    Name: PublishToConsumer(ExternalImplicit, i: 2),
+    Resource: PublishToConsumer(ExternalImplicit, i: 2),
+    Service: Samples.RabbitMQ,
[...]
-      amqp.command: basic.publish,
-      amqp.exchange: ,
-      amqp.routing_key: hello,
-      component: RabbitMQ,
[...]
-      message.size: 17,
-      out.host: rabbitmq,
[...]
-      span.kind: producer,
-      _dd.base_service: Samples.RabbitMQ
+      version: 1.0.0
[...]
-      _dd.top_level: 1.0
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_85,
-    SpanId: Id_99,
+    TraceId: Id_90,
+    SpanId: Id_92,
[...]
-    ParentId: Id_86,
+    ParentId: Id_91,

3 occurrences of :

-    TraceId: Id_87,
-    SpanId: Id_100,
+    TraceId: Id_90,
+    SpanId: Id_93,
[...]
-    Resource: basic.publish <default> -> hello,
+    Resource: basic.deliver,
[...]
-    ParentId: Id_88,
+    ParentId: Id_92,
[...]
-      amqp.command: basic.publish,
+      amqp.command: basic.deliver,
[...]
+      amqp.queue: hello,
[...]
-      out.host: rabbitmq,
[...]
-      span.kind: producer,
+      span.kind: consumer,
[...]
-      _dd.top_level: 1.0
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_65,
-    SpanId: Id_101,
-    Name: amqp.command,
-    Resource: basic.deliver,
-    Service: Samples.RabbitMQ-rabbitmq,
-    Type: queue,
-    ParentId: Id_89,
+    TraceId: Id_90,
+    SpanId: Id_94,
+    Name: consumer.Received event,
+    Resource: consumer.Received event,
+    Service: Samples.RabbitMQ,
+    ParentId: Id_92,
[...]
-      amqp.command: basic.deliver,
-      amqp.exchange: ,
-      amqp.queue: hello,
-      amqp.routing_key: hello,
-      component: RabbitMQ,
[...]
-      message.size: 17,
[...]
-      span.kind: consumer,
-      _dd.base_service: Samples.RabbitMQ
+      version: 1.0.0

3 occurrences of :

-    TraceId: Id_67,
-    SpanId: Id_102,
-    Name: amqp.command,
-    Resource: basic.deliver,
-    Service: Samples.RabbitMQ-rabbitmq,
-    Type: queue,
-    ParentId: Id_90,
+    TraceId: Id_95,
+    SpanId: Id_96,
+    Name: PublishToConsumer(InternalAsyncDerived, i: 0),
+    Resource: PublishToConsumer(InternalAsyncDerived, i: 0),
+    Service: Samples.RabbitMQ,
[...]
-      amqp.command: basic.deliver,
-      amqp.exchange: ,
-      amqp.queue: hello,
-      amqp.routing_key: hello,
-      component: RabbitMQ,
[...]
-      message.size: 17,
[...]
-      span.kind: consumer,
-      _dd.base_service: Samples.RabbitMQ
+      version: 1.0.0

3 occurrences of :

-    TraceId: Id_69,
-    SpanId: Id_103,
+    TraceId: Id_95,
+    SpanId: Id_97,
[...]
-    Resource: basic.deliver,
+    Resource: basic.publish <default> -> hello,
[...]
-    ParentId: Id_91,
+    ParentId: Id_96,
[...]
-      amqp.command: basic.deliver,
+      amqp.command: basic.publish,
[...]
-      amqp.queue: hello,
[...]
+      out.host: rabbitmq,
[...]
-      span.kind: consumer,
+      span.kind: producer,
[...]
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      _dd.top_level: 1.0
[...]
-    TraceId: Id_71,
-    SpanId: Id_104,
+    TraceId: Id_95,
+    SpanId: Id_98,
[...]
-    ParentId: Id_92,
+    ParentId: Id_97,

3 occurrences of :

-    TraceId: Id_73,
-    SpanId: Id_105,
-    Name: amqp.command,
-    Resource: basic.deliver,
-    Service: Samples.RabbitMQ-rabbitmq,
-    Type: queue,
-    ParentId: Id_93,
+    TraceId: Id_95,
+    SpanId: Id_99,
+    Name: consumer.Received event,
+    Resource: consumer.Received event,
+    Service: Samples.RabbitMQ,
+    ParentId: Id_97,
[...]
-      amqp.command: basic.deliver,
-      amqp.exchange: ,
-      amqp.queue: hello,
-      amqp.routing_key: hello,
-      component: RabbitMQ,
[...]
-      message.size: 17,
[...]
-      span.kind: consumer,
-      _dd.base_service: Samples.RabbitMQ
+      version: 1.0.0

3 occurrences of :

-    TraceId: Id_75,
-    SpanId: Id_106,
-    Name: amqp.command,
-    Resource: basic.deliver,
-    Service: Samples.RabbitMQ-rabbitmq,
-    Type: queue,
-    ParentId: Id_94,
+    TraceId: Id_100,
+    SpanId: Id_101,
+    Name: PublishToConsumer(InternalAsyncDerived, i: 1),
+    Resource: PublishToConsumer(InternalAsyncDerived, i: 1),
+    Service: Samples.RabbitMQ,
[...]
-      amqp.command: basic.deliver,
-      amqp.exchange: ,
-      amqp.queue: hello,
-      amqp.routing_key: hello,
-      component: RabbitMQ,
[...]
-      message.size: 17,
[...]
-      span.kind: consumer,
-      _dd.base_service: Samples.RabbitMQ
+      version: 1.0.0

3 occurrences of :

-    TraceId: Id_77,
-    SpanId: Id_107,
+    TraceId: Id_100,
+    SpanId: Id_102,
[...]
-    Resource: basic.deliver,
+    Resource: basic.publish <default> -> hello,
[...]
-    ParentId: Id_95,
+    ParentId: Id_101,
[...]
-      amqp.command: basic.deliver,
+      amqp.command: basic.publish,
[...]
-      amqp.queue: hello,
[...]
+      out.host: rabbitmq,
[...]
-      span.kind: consumer,
+      span.kind: producer,
[...]
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      _dd.top_level: 1.0
[...]
-    TraceId: Id_79,
-    SpanId: Id_108,
+    TraceId: Id_100,
+    SpanId: Id_103,
[...]
-    ParentId: Id_96,
+    ParentId: Id_102,

3 occurrences of :

-    TraceId: Id_81,
-    SpanId: Id_109,
-    Name: amqp.command,
-    Resource: basic.deliver,
-    Service: Samples.RabbitMQ-rabbitmq,
-    Type: queue,
-    ParentId: Id_97,
+    TraceId: Id_100,
+    SpanId: Id_104,
+    Name: consumer.Received event,
+    Resource: consumer.Received event,
+    Service: Samples.RabbitMQ,
+    ParentId: Id_102,
[...]
-      amqp.command: basic.deliver,
-      amqp.exchange: ,
-      amqp.queue: hello,
-      amqp.routing_key: hello,
-      component: RabbitMQ,
[...]
-      message.size: 17,
[...]
-      span.kind: consumer,
-      _dd.base_service: Samples.RabbitMQ
+      version: 1.0.0

3 occurrences of :

-    TraceId: Id_83,
-    SpanId: Id_110,
-    Name: amqp.command,
-    Resource: basic.deliver,
-    Service: Samples.RabbitMQ-rabbitmq,
-    Type: queue,
-    ParentId: Id_98,
+    TraceId: Id_105,
+    SpanId: Id_106,
+    Name: PublishToConsumer(InternalAsyncDerived, i: 2),
+    Resource: PublishToConsumer(InternalAsyncDerived, i: 2),
+    Service: Samples.RabbitMQ,
[...]
-      amqp.command: basic.deliver,
-      amqp.exchange: ,
-      amqp.queue: hello,
-      amqp.routing_key: hello,
-      component: RabbitMQ,
[...]
-      message.size: 17,
[...]
-      span.kind: consumer,
-      _dd.base_service: Samples.RabbitMQ
+      version: 1.0.0

3 occurrences of :

-    TraceId: Id_85,
-    SpanId: Id_111,
+    TraceId: Id_105,
+    SpanId: Id_107,
[...]
-    Resource: basic.deliver,
+    Resource: basic.publish <default> -> hello,
[...]
-    ParentId: Id_99,
+    ParentId: Id_106,
[...]
-      amqp.command: basic.deliver,
+      amqp.command: basic.publish,
[...]
-      amqp.queue: hello,
[...]
+      out.host: rabbitmq,
[...]
-      span.kind: consumer,
+      span.kind: producer,
[...]
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      _dd.top_level: 1.0
[...]
-    TraceId: Id_87,
-    SpanId: Id_112,
+    TraceId: Id_105,
+    SpanId: Id_108,
[...]
-    ParentId: Id_100,
+    ParentId: Id_107,

6 occurrences of :

-    TraceId: Id_65,
-    SpanId: Id_113,
+    TraceId: Id_105,
+    SpanId: Id_109,
[...]
-    ParentId: Id_89,
+    ParentId: Id_107,

6 occurrences of :

-    TraceId: Id_67,
-    SpanId: Id_114,
-    Name: consumer.Received event,
-    Resource: consumer.Received event,
+    TraceId: Id_110,
+    SpanId: Id_111,
+    Name: PublishToConsumer(InternalSyncDerived, i: 0),
+    Resource: PublishToConsumer(InternalSyncDerived, i: 0),
[...]
-    ParentId: Id_90,

3 occurrences of :

-    TraceId: Id_69,
-    SpanId: Id_115,
-    Name: consumer.Received event,
-    Resource: consumer.Received event,
-    Service: Samples.RabbitMQ,
-    ParentId: Id_91,
+    TraceId: Id_110,
+    SpanId: Id_112,
+    Name: amqp.command,
+    Resource: basic.publish <default> -> hello,
+    Service: Samples.RabbitMQ-rabbitmq,
+    Type: queue,
+    ParentId: Id_111,
[...]
+      amqp.command: basic.publish,
+      amqp.exchange: ,
+      amqp.routing_key: hello,
+      component: RabbitMQ,
[...]
+      message.size: 17,
+      out.host: rabbitmq,
[...]
-      version: 1.0.0
+      span.kind: producer,
+      _dd.base_service: Samples.RabbitMQ
[...]
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      _dd.top_level: 1.0
[...]
-    TraceId: Id_71,
-    SpanId: Id_116,
-    Name: consumer.Received event,
-    Resource: consumer.Received event,
-    Service: Samples.RabbitMQ,
-    ParentId: Id_92,
+    TraceId: Id_110,
+    SpanId: Id_113,
+    Name: amqp.command,
+    Resource: basic.deliver,
+    Service: Samples.RabbitMQ-rabbitmq,
+    Type: queue,
+    ParentId: Id_112,
[...]
+      amqp.command: basic.deliver,
+      amqp.exchange: ,
+      amqp.queue: hello,
+      amqp.routing_key: hello,
+      component: RabbitMQ,
[...]
+      message.size: 17,
[...]
-      version: 1.0.0
+      span.kind: consumer,
+      _dd.base_service: Samples.RabbitMQ

6 occurrences of :

-    TraceId: Id_73,
-    SpanId: Id_117,
+    TraceId: Id_110,
+    SpanId: Id_114,
[...]
-    ParentId: Id_93,
+    ParentId: Id_112,

6 occurrences of :

-    TraceId: Id_75,
-    SpanId: Id_118,
-    Name: consumer.Received event,
-    Resource: consumer.Received event,
+    TraceId: Id_115,
+    SpanId: Id_116,
+    Name: PublishToConsumer(InternalSyncDerived, i: 1),
+    Resource: PublishToConsumer(InternalSyncDerived, i: 1),
[...]
-    ParentId: Id_94,

3 occurrences of :

-    TraceId: Id_77,
-    SpanId: Id_119,
-    Name: consumer.Received event,
-    Resource: consumer.Received event,
-    Service: Samples.RabbitMQ,
-    ParentId: Id_95,
+    TraceId: Id_115,
+    SpanId: Id_117,
+    Name: amqp.command,
+    Resource: basic.publish <default> -> hello,
+    Service: Samples.RabbitMQ-rabbitmq,
+    Type: queue,
+    ParentId: Id_116,
[...]
+      amqp.command: basic.publish,
+      amqp.exchange: ,
+      amqp.routing_key: hello,
+      component: RabbitMQ,
[...]
+      message.size: 17,
+      out.host: rabbitmq,
[...]
-      version: 1.0.0
+      span.kind: producer,
+      _dd.base_service: Samples.RabbitMQ
+    },
+    Metrics: {
+      _dd.top_level: 1.0
+    }
+  },
+  {
+    TraceId: Id_115,
+    SpanId: Id_118,
+    Name: amqp.command,
+    Resource: basic.deliver,
+    Service: Samples.RabbitMQ-rabbitmq,
+    Type: queue,
+    ParentId: Id_117,
+    Tags: {
+      amqp.command: basic.deliver,
+      amqp.exchange: ,
+      amqp.queue: hello,
+      amqp.routing_key: hello,
+      component: RabbitMQ,
+      env: integration_tests,
+      language: dotnet,
+      message.size: 17,
+      runtime-id: Guid_1,
+      span.kind: consumer,
+      _dd.base_service: Samples.RabbitMQ

6 occurrences of :

-    TraceId: Id_79,
-    SpanId: Id_120,
+    TraceId: Id_115,
+    SpanId: Id_119,
[...]
-    ParentId: Id_96,
+    ParentId: Id_117,

6 occurrences of :

-    TraceId: Id_81,
+    TraceId: Id_120,
[...]
-    Name: consumer.Received event,
-    Resource: consumer.Received event,
+    Name: PublishToConsumer(InternalSyncDerived, i: 2),
+    Resource: PublishToConsumer(InternalSyncDerived, i: 2),
[...]
-    ParentId: Id_97,

3 occurrences of :

-    TraceId: Id_83,
+    TraceId: Id_120,
[...]
-    Name: consumer.Received event,
-    Resource: consumer.Received event,
-    Service: Samples.RabbitMQ,
-    ParentId: Id_98,
+    Name: amqp.command,
+    Resource: basic.publish <default> -> hello,
+    Service: Samples.RabbitMQ-rabbitmq,
+    Type: queue,
+    ParentId: Id_121,
[...]
+      amqp.command: basic.publish,
+      amqp.exchange: ,
+      amqp.routing_key: hello,
+      component: RabbitMQ,
[...]
+      message.size: 17,
+      out.host: rabbitmq,
[...]
-      version: 1.0.0
+      span.kind: producer,
+      _dd.base_service: Samples.RabbitMQ
[...]
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      _dd.top_level: 1.0
[...]
-    TraceId: Id_85,
+    TraceId: Id_120,
[...]
-    Name: consumer.Received event,
-    Resource: consumer.Received event,
-    Service: Samples.RabbitMQ,
-    ParentId: Id_99,
+    Name: amqp.command,
+    Resource: basic.deliver,
+    Service: Samples.RabbitMQ-rabbitmq,
+    Type: queue,
+    ParentId: Id_122,
[...]
+      amqp.command: basic.deliver,
+      amqp.exchange: ,
+      amqp.queue: hello,
+      amqp.routing_key: hello,
+      component: RabbitMQ,
[...]
+      message.size: 17,
[...]
-      version: 1.0.0
+      span.kind: consumer,
+      _dd.base_service: Samples.RabbitMQ

6 occurrences of :

-    TraceId: Id_87,
+    TraceId: Id_120,
[...]
-    ParentId: Id_100,
+    ParentId: Id_122,

3 occurrences of :

-    Name: Program.PublishAndGetDefault(useDefaultQueue: False),
-    Resource: Program.PublishAndGetDefault(useDefaultQueue: False),
-    Service: Samples.RabbitMQ,
-    Tags: {
-      env: integration_tests,
-      language: dotnet,
-      runtime-id: Guid_1,
-      version: 1.0.0
-    },
-    Metrics: {
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
-    }
-  },
-  {
-    TraceId: Id_11,
-    SpanId: Id_12,
-    Name: Program.PublishAndGetDefault(useDefaultQueue: False),
-    Resource: Program.PublishAndGetDefault(useDefaultQueue: False),
-    Service: Samples.RabbitMQ,
-    Tags: {
-      env: integration_tests,
-      language: dotnet,
-      runtime-id: Guid_1,
-      version: 1.0.0
-    },
-    Metrics: {
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
-    }
-  },
-  {
-    TraceId: Id_13,
-    SpanId: Id_14,
-    Name: Program.PublishAndGetDefault(useDefaultQueue: False),
-    Resource: Program.PublishAndGetDefault(useDefaultQueue: False),
-    Service: Samples.RabbitMQ,
-    Tags: {
-      env: integration_tests,
-      language: dotnet,
-      runtime-id: Guid_1,
-      version: 1.0.0
-    },
-    Metrics: {
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
-    }
-  },
-  {
-    TraceId: Id_15,
-    SpanId: Id_16,
-    Name: Program.PublishAndGetDefault(useDefaultQueue: False),
-    Resource: Program.PublishAndGetDefault(useDefaultQueue: False),
+    Name: Program.PublishAndGetDefault(ExternalExplicit, useDefaultQueue: False),
+    Resource: Program.PublishAndGetDefault(ExternalExplicit, useDefaultQueue: False),

3 occurrences of :

-    SpanId: Id_17,
+    SpanId: Id_11,

3 occurrences of :

-    TraceId: Id_11,
-    SpanId: Id_18,
+    TraceId: Id_9,
+    SpanId: Id_12,
[...]
-    Resource: exchange.declare,
+    Resource: queue.bind,
[...]
-    ParentId: Id_12,
+    ParentId: Id_10,
[...]
-      amqp.command: exchange.declare,
+      amqp.command: queue.bind,
[...]
+      amqp.queue: test-queue-name,
+      amqp.routing_key: test-routing-key,

3 occurrences of :

-    TraceId: Id_13,
-    SpanId: Id_19,
+    TraceId: Id_9,
+    SpanId: Id_13,
[...]
-    Resource: exchange.declare,
+    Resource: queue.declare,
[...]
-    ParentId: Id_14,
+    ParentId: Id_10,
[...]
-      amqp.command: exchange.declare,
-      amqp.exchange: test-exchange-name,
+      amqp.command: queue.declare,
+      amqp.queue: test-queue-name,

3 occurrences of :

-    TraceId: Id_15,
-    SpanId: Id_20,
-    Name: amqp.command,
-    Resource: exchange.declare,
+    TraceId: Id_9,
+    SpanId: Id_14,
+    Name: amqp.process,
+    Resource: basic.get test-queue-name,
[...]
-    ParentId: Id_16,
+    ParentId: Id_10,
[...]
-      amqp.command: exchange.declare,
-      amqp.exchange: test-exchange-name,
+      amqp.command: basic.get,
+      amqp.queue: test-queue-name,
[...]
-      out.host: rabbitmq,
-      peer.service: rabbitmq,
-      span.kind: client,
-      version: 1.0.0,
-      _dd.peer.service.source: out.host
+      span.kind: consumer,
+      version: 1.0.0
[...]
-    SpanId: Id_21,
-    Name: amqp.command,
-    Resource: queue.bind,
+    SpanId: Id_15,
+    Name: amqp.send,
+    Resource: basic.publish test-exchange-name -> test-routing-key,
[...]
-      amqp.command: queue.bind,
+      amqp.command: basic.publish,
[...]
-      amqp.queue: test-queue-name,
[...]
+      message.size: 80,
[...]
-      span.kind: client,
+      span.kind: producer,
[...]
-    TraceId: Id_11,
-    SpanId: Id_22,
-    Name: amqp.command,
-    Resource: queue.bind,
+    TraceId: Id_9,
+    SpanId: Id_16,
+    Name: amqp.process,
+    Resource: basic.get test-queue-name,
[...]
-    ParentId: Id_12,
+    ParentId: Id_15,
[...]
-      amqp.command: queue.bind,
-      amqp.exchange: test-exchange-name,
+      amqp.command: basic.get,
[...]
-      amqp.routing_key: test-routing-key,
[...]
-      out.host: rabbitmq,
-      peer.service: rabbitmq,
-      span.kind: client,
-      version: 1.0.0,
-      _dd.peer.service.source: out.host
+      message.size: 80,
+      runtime-id: Guid_1,
+      span.kind: consumer,
+      version: 1.0.0
+    },
+    Metrics: {
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
+    }
+  },
+  {
+    TraceId: Id_17,
+    SpanId: Id_18,
+    Name: Program.PublishAndGetDefault(ExternalExplicit, useDefaultQueue: True),
+    Resource: Program.PublishAndGetDefault(ExternalExplicit, useDefaultQueue: True),
+    Service: Samples.RabbitMQ,
+    Tags: {
+      env: integration_tests,
+      language: dotnet,
+      runtime-id: Guid_1,
+      version: 1.0.0
+    },
+    Metrics: {
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_13,
-    SpanId: Id_23,
+    TraceId: Id_17,
+    SpanId: Id_19,
[...]
-    Resource: queue.bind,
+    Resource: queue.declare,
[...]
-    ParentId: Id_14,
+    ParentId: Id_18,
[...]
-      amqp.command: queue.bind,
-      amqp.exchange: test-exchange-name,
-      amqp.queue: test-queue-name,
-      amqp.routing_key: test-routing-key,
+      amqp.command: queue.declare,
+      amqp.queue: ,

3 occurrences of :

-    TraceId: Id_15,
-    SpanId: Id_24,
-    Name: amqp.command,
-    Resource: queue.bind,
+    TraceId: Id_17,
+    SpanId: Id_20,
+    Name: amqp.process,
+    Resource: basic.get <generated>,
[...]
-    ParentId: Id_16,
+    ParentId: Id_18,
[...]
-      amqp.command: queue.bind,
-      amqp.exchange: test-exchange-name,
-      amqp.queue: test-queue-name,
-      amqp.routing_key: test-routing-key,
+      amqp.command: basic.get,
+      amqp.queue: AmqQueue_1
[...]
-      out.host: rabbitmq,
-      peer.service: rabbitmq,
-      span.kind: client,
-      version: 1.0.0,
-      _dd.peer.service.source: out.host
+      span.kind: consumer,
+      version: 1.0.0
[...]
-    TraceId: Id_9,
-    SpanId: Id_25,
-    Name: amqp.command,
-    Resource: queue.declare,
+    TraceId: Id_17,
+    SpanId: Id_21,
+    Name: amqp.send,
+    Resource: basic.publish <default> -> <generated>,
[...]
-    ParentId: Id_10,
+    ParentId: Id_18,
[...]
-      amqp.command: queue.declare,
-      amqp.queue: test-queue-name,
+      amqp.command: basic.publish,
+      amqp.exchange: ,
+      amqp.routing_key: AmqQueue_1
[...]
+      message.size: 79,
[...]
-      span.kind: client,
+      span.kind: producer,
[...]
-    TraceId: Id_11,
-    SpanId: Id_26,
+    TraceId: Id_17,
+    SpanId: Id_22,
+    Name: amqp.process,
+    Resource: basic.get <generated>,
+    Service: Samples.RabbitMQ,
+    Type: queue,
+    ParentId: Id_21,
+    Tags: {
+      amqp.command: basic.get,
+      amqp.queue: AmqQueue_1
+      component: RabbitMQ,
+      env: integration_tests,
+      language: dotnet,
+      message.size: 79,
+      runtime-id: Guid_1,
+      span.kind: consumer,
+      version: 1.0.0
+    },
+    Metrics: {
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
+    }
+  },
+  {
+    TraceId: Id_23,
+    SpanId: Id_24,
+    Name: Program.PublishAndGetDefault(ExternalImplicit, useDefaultQueue: False),
+    Resource: Program.PublishAndGetDefault(ExternalImplicit, useDefaultQueue: False),
+    Service: Samples.RabbitMQ,
+    Tags: {
+      env: integration_tests,
+      language: dotnet,
+      runtime-id: Guid_1,
+      version: 1.0.0
+    },
+    Metrics: {
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
+    }
+  },
+  {
+    TraceId: Id_23,
+    SpanId: Id_25,
[...]
-    Resource: queue.declare,
+    Resource: exchange.declare,
[...]
-    ParentId: Id_12,
+    ParentId: Id_24,
[...]
-      amqp.command: queue.declare,
-      amqp.queue: test-queue-name,
+      amqp.command: exchange.declare,
+      amqp.exchange: test-exchange-name,

3 occurrences of :

-    TraceId: Id_13,
-    SpanId: Id_27,
+    TraceId: Id_23,
+    SpanId: Id_26,
[...]
-    Resource: queue.declare,
+    Resource: queue.bind,
[...]
-    ParentId: Id_14,
+    ParentId: Id_24,
[...]
-      amqp.command: queue.declare,
+      amqp.command: queue.bind,
+      amqp.exchange: test-exchange-name,
[...]
+      amqp.routing_key: test-routing-key,

3 occurrences of :

-    TraceId: Id_15,
-    SpanId: Id_28,
+    TraceId: Id_23,
+    SpanId: Id_27,
[...]
-    ParentId: Id_16,
+    ParentId: Id_24,

3 occurrences of :

-    TraceId: Id_9,
-    SpanId: Id_29,
+    TraceId: Id_23,
+    SpanId: Id_28,
[...]
-    ParentId: Id_10,
+    ParentId: Id_24,

3 occurrences of :

-    TraceId: Id_11,
-    SpanId: Id_30,
-    Name: amqp.process,
-    Resource: basic.get test-queue-name,
+    TraceId: Id_23,
+    SpanId: Id_29,
+    Name: amqp.send,
+    Resource: basic.publish test-exchange-name -> test-routing-key,
[...]
-    ParentId: Id_12,
+    ParentId: Id_24,
[...]
-      amqp.command: basic.get,
-      amqp.queue: test-queue-name,
+      amqp.command: basic.publish,
+      amqp.exchange: test-exchange-name,
+      amqp.routing_key: test-routing-key,
[...]
-      span.kind: consumer,
-      version: 1.0.0
-    }
-  },
+      message.size: 80,
+      out.host: rabbitmq,
+      peer.service: rabbitmq,
+      span.kind: producer,
+      version: 1.0.0,
+      _dd.peer.service.source: out.host
+    }
+  },
[...]
-    TraceId: Id_13,
-    SpanId: Id_31,
+    TraceId: Id_23,
+    SpanId: Id_30,
[...]
-    ParentId: Id_14,
+    ParentId: Id_29,
[...]
+      message.size: 80,
+      runtime-id: Guid_1,
[...]
+    },
+    Metrics: {
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_15,
+    TraceId: Id_31,
[...]
-    Name: amqp.process,
-    Resource: basic.get test-queue-name,
+    Name: Program.PublishAndGetDefault(ExternalImplicit, useDefaultQueue: True),
+    Resource: Program.PublishAndGetDefault(ExternalImplicit, useDefaultQueue: True),
[...]
-    Type: queue,
-    ParentId: Id_16,
[...]
-      amqp.command: basic.get,
-      amqp.queue: test-queue-name,
-      component: RabbitMQ,
[...]
-      span.kind: consumer,
+      runtime-id: Guid_1,
[...]
+    },
+    Metrics: {
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_9,
+    TraceId: Id_31,
[...]
-    Name: amqp.send,
-    Resource: basic.publish test-exchange-name -> test-routing-key,
+    Name: amqp.command,
+    Resource: queue.declare,
[...]
-    ParentId: Id_10,
+    ParentId: Id_32,
[...]
-      amqp.command: basic.publish,
-      amqp.exchange: test-exchange-name,
-      amqp.routing_key: test-routing-key,
+      amqp.command: queue.declare,
+      amqp.queue: ,
[...]
-      message.size: 62,
[...]
-      span.kind: producer,
+      span.kind: client,
[...]
-    TraceId: Id_11,
+    TraceId: Id_31,
[...]
-    Name: amqp.send,
-    Resource: basic.publish test-exchange-name -> test-routing-key,
+    Name: amqp.process,
+    Resource: basic.get <generated>,
[...]
-    ParentId: Id_12,
+    ParentId: Id_32,
[...]
-      amqp.command: basic.publish,
-      amqp.exchange: test-exchange-name,
-      amqp.routing_key: test-routing-key,
+      amqp.command: basic.get,
+      amqp.queue: AmqQueue_4
[...]
-      message.size: 62,
-      out.host: rabbitmq,
-      peer.service: rabbitmq,
-      span.kind: producer,
-      version: 1.0.0,
-      _dd.peer.service.source: out.host
+      span.kind: consumer,
+      version: 1.0.0
[...]
-    TraceId: Id_13,
+    TraceId: Id_31,
[...]
-    Resource: basic.publish test-exchange-name -> test-routing-key,
+    Resource: basic.publish <default> -> <generated>,
[...]
-    ParentId: Id_14,
+    ParentId: Id_32,
[...]
-      amqp.exchange: test-exchange-name,
-      amqp.routing_key: test-routing-key,
+      amqp.exchange: ,
+      amqp.routing_key: AmqQueue_4
[...]
-      message.size: 62,
+      message.size: 79,

3 occurrences of :

-    TraceId: Id_15,
+    TraceId: Id_31,
[...]
-    Name: amqp.send,
-    Resource: basic.publish test-exchange-name -> test-routing-key,
-    Service: Samples.RabbitMQ,
-    Type: queue,
-    ParentId: Id_16,
-    Tags: {
-      amqp.command: basic.publish,
-      amqp.exchange: test-exchange-name,
-      amqp.routing_key: test-routing-key,
-      component: RabbitMQ,
-      env: integration_tests,
-      language: dotnet,
-      message.size: 62,
-      out.host: rabbitmq,
-      peer.service: rabbitmq,
-      span.kind: producer,
-      version: 1.0.0,
-      _dd.peer.service.source: out.host
-    }
-  },
-  {
-    TraceId: Id_9,
-    SpanId: Id_37,
[...]
-    Resource: basic.get test-queue-name,
+    Resource: basic.get <generated>,
[...]
-    ParentId: Id_33,
+    ParentId: Id_35,
[...]
-      amqp.queue: test-queue-name,
+      amqp.queue: AmqQueue_4
[...]
-      message.size: 62,
+      message.size: 79,

3 occurrences of :

-    TraceId: Id_11,
+    TraceId: Id_37,
[...]
-    Name: amqp.process,
-    Resource: basic.get test-queue-name,
+    Name: Program.PublishAndGetDefault(InternalAsyncDerived, useDefaultQueue: False),
+    Resource: Program.PublishAndGetDefault(InternalAsyncDerived, useDefaultQueue: False),
[...]
-    Type: queue,
-    ParentId: Id_34,
[...]
-      amqp.command: basic.get,
-      amqp.queue: test-queue-name,
-      component: RabbitMQ,
[...]
-      message.size: 62,
[...]
-      span.kind: consumer,

3 occurrences of :

-    TraceId: Id_13,
+    TraceId: Id_37,
[...]
-    Name: amqp.process,
-    Resource: basic.get test-queue-name,
+    Name: amqp.command,
+    Resource: exchange.declare,
[...]
-    ParentId: Id_35,
+    ParentId: Id_38,
[...]
-      amqp.command: basic.get,
-      amqp.queue: test-queue-name,
+      amqp.command: exchange.declare,
+      amqp.exchange: test-exchange-name,
[...]
-      message.size: 62,
-      runtime-id: Guid_1,
-      span.kind: consumer,
-      version: 1.0.0
-    },
-    Metrics: {
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      out.host: rabbitmq,
+      peer.service: rabbitmq,
+      span.kind: client,
+      version: 1.0.0,
+      _dd.peer.service.source: out.host
[...]
-    TraceId: Id_15,
+    TraceId: Id_37,
[...]
-    Name: amqp.process,
-    Resource: basic.get test-queue-name,
+    Name: amqp.command,
+    Resource: queue.bind,
[...]
-    ParentId: Id_36,
+    ParentId: Id_38,
[...]
-      amqp.command: basic.get,
+      amqp.command: queue.bind,
+      amqp.exchange: test-exchange-name,
[...]
+      amqp.routing_key: test-routing-key,
[...]
-      message.size: 62,
-      runtime-id: Guid_1,
-      span.kind: consumer,
-      version: 1.0.0
-    },
-    Metrics: {
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      out.host: rabbitmq,
+      peer.service: rabbitmq,
+      span.kind: client,
+      version: 1.0.0,
+      _dd.peer.service.source: out.host
+    }
+  },
+  {
+    TraceId: Id_37,
+    SpanId: Id_41,
+    Name: amqp.command,
+    Resource: queue.declare,
+    Service: Samples.RabbitMQ,
+    Type: queue,
+    ParentId: Id_38,
+    Tags: {
+      amqp.command: queue.declare,
+      amqp.queue: test-queue-name,
+      component: RabbitMQ,
+      env: integration_tests,
+      language: dotnet,
+      out.host: rabbitmq,
+      peer.service: rabbitmq,
+      span.kind: client,
+      version: 1.0.0,
+      _dd.peer.service.source: out.host
[...]
-    TraceId: Id_41,
+    TraceId: Id_37,
[...]
-    Name: Program.PublishAndGetDefault(useDefaultQueue: True),
-    Resource: Program.PublishAndGetDefault(useDefaultQueue: True),
+    Name: amqp.process,
+    Resource: basic.get test-queue-name,
[...]
+    Type: queue,
+    ParentId: Id_38,
[...]
+      amqp.command: basic.get,
+      amqp.queue: test-queue-name,
+      component: RabbitMQ,
[...]
-      runtime-id: Guid_1,
+      span.kind: consumer,
[...]
-    },
-    Metrics: {
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_43,
-    SpanId: Id_44,
-    Name: Program.PublishAndGetDefault(useDefaultQueue: True),
-    Resource: Program.PublishAndGetDefault(useDefaultQueue: True),
+    TraceId: Id_37,
+    SpanId: Id_43,
+    Name: amqp.send,
+    Resource: basic.publish test-exchange-name -> test-routing-key,
[...]
+    Type: queue,
+    ParentId: Id_38,
[...]
+      amqp.command: basic.publish,
+      amqp.exchange: test-exchange-name,
+      amqp.routing_key: test-routing-key,
+      component: RabbitMQ,
[...]
-      runtime-id: Guid_1,
-      version: 1.0.0
-    },
-    Metrics: {
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      message.size: 84,
+      out.host: rabbitmq,
+      peer.service: rabbitmq,
+      span.kind: producer,
+      version: 1.0.0,
+      _dd.peer.service.source: out.host
[...]
-    TraceId: Id_45,
-    SpanId: Id_46,
-    Name: Program.PublishAndGetDefault(useDefaultQueue: True),
-    Resource: Program.PublishAndGetDefault(useDefaultQueue: True),
+    TraceId: Id_37,
+    SpanId: Id_44,
+    Name: amqp.process,
+    Resource: basic.get test-queue-name,
[...]
+    Type: queue,
+    ParentId: Id_43,
[...]
+      amqp.command: basic.get,
+      amqp.queue: test-queue-name,
+      component: RabbitMQ,
[...]
+      message.size: 84,
[...]
+      span.kind: consumer,

3 occurrences of :

-    TraceId: Id_47,
-    SpanId: Id_48,
-    Name: Program.PublishAndGetDefault(useDefaultQueue: True),
-    Resource: Program.PublishAndGetDefault(useDefaultQueue: True),
+    TraceId: Id_45,
+    SpanId: Id_46,
+    Name: Program.PublishAndGetDefault(InternalAsyncDerived, useDefaultQueue: True),
+    Resource: Program.PublishAndGetDefault(InternalAsyncDerived, useDefaultQueue: True),

3 occurrences of :

-    TraceId: Id_41,
-    SpanId: Id_49,
+    TraceId: Id_45,
+    SpanId: Id_47,
[...]
-    ParentId: Id_42,
+    ParentId: Id_46,

3 occurrences of :

-    TraceId: Id_43,
-    SpanId: Id_50,
-    Name: amqp.command,
-    Resource: queue.declare,
+    TraceId: Id_45,
+    SpanId: Id_48,
+    Name: amqp.process,
+    Resource: basic.get <generated>,
[...]
-    ParentId: Id_44,
+    ParentId: Id_46,
[...]
-      amqp.command: queue.declare,
-      amqp.queue: ,
+      amqp.command: basic.get,
+      amqp.queue: AmqQueue_7
[...]
-      out.host: rabbitmq,
-      peer.service: rabbitmq,
-      span.kind: client,
-      version: 1.0.0,
-      _dd.peer.service.source: out.host
+      span.kind: consumer,
+      version: 1.0.0
[...]
-    SpanId: Id_51,
-    Name: amqp.command,
-    Resource: queue.declare,
+    SpanId: Id_49,
+    Name: amqp.send,
+    Resource: basic.publish <default> -> <generated>,
[...]
-      amqp.command: queue.declare,
-      amqp.queue: ,
+      amqp.command: basic.publish,
+      amqp.exchange: ,
+      amqp.routing_key: AmqQueue_7
[...]
+      message.size: 83,
[...]
-      span.kind: client,
+      span.kind: producer,
[...]
-    TraceId: Id_47,
-    SpanId: Id_52,
-    Name: amqp.command,
-    Resource: queue.declare,
+    TraceId: Id_45,
+    SpanId: Id_50,
+    Name: amqp.process,
+    Resource: basic.get <generated>,
[...]
-    ParentId: Id_48,
+    ParentId: Id_49,
[...]
-      amqp.command: queue.declare,
-      amqp.queue: ,
+      amqp.command: basic.get,
+      amqp.queue: AmqQueue_7
[...]
-      out.host: rabbitmq,
-      peer.service: rabbitmq,
-      span.kind: client,
-      version: 1.0.0,
-      _dd.peer.service.source: out.host
-    }
-  },
+      message.size: 83,
+      runtime-id: Guid_1,
+      span.kind: consumer,
+      version: 1.0.0
+    },
+    Metrics: {
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
+    }
+  },
+  {
+    TraceId: Id_51,
+    SpanId: Id_52,
+    Name: Program.PublishAndGetDefault(InternalSyncDerived, useDefaultQueue: False),
+    Resource: Program.PublishAndGetDefault(InternalSyncDerived, useDefaultQueue: False),
+    Service: Samples.RabbitMQ,
+    Tags: {
+      env: integration_tests,
+      language: dotnet,
+      runtime-id: Guid_1,
+      version: 1.0.0
+    },
+    Metrics: {
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
+    }
+  },
[...]
-    TraceId: Id_41,
+    TraceId: Id_51,
[...]
-    Name: amqp.process,
-    Resource: basic.get <generated>,
+    Name: amqp.command,
+    Resource: exchange.declare,
[...]
-    ParentId: Id_42,
+    ParentId: Id_52,
[...]
-      amqp.command: basic.get,
-      amqp.queue: AmqQueue_1
+      amqp.command: exchange.declare,
+      amqp.exchange: test-exchange-name,
[...]
-      span.kind: consumer,
-      version: 1.0.0
+      out.host: rabbitmq,
+      peer.service: rabbitmq,
+      span.kind: client,
+      version: 1.0.0,
+      _dd.peer.service.source: out.host
[...]
-    TraceId: Id_43,
+    TraceId: Id_51,
[...]
-    Name: amqp.process,
-    Resource: basic.get <generated>,
+    Name: amqp.command,
+    Resource: queue.bind,
[...]
-    ParentId: Id_44,
+    ParentId: Id_52,
[...]
-      amqp.command: basic.get,
-      amqp.queue: AmqQueue_2
+      amqp.command: queue.bind,
+      amqp.exchange: test-exchange-name,
+      amqp.queue: test-queue-name,
+      amqp.routing_key: test-routing-key,
[...]
-      span.kind: consumer,
-      version: 1.0.0
+      out.host: rabbitmq,
+      peer.service: rabbitmq,
+      span.kind: client,
+      version: 1.0.0,
+      _dd.peer.service.source: out.host
[...]
-    TraceId: Id_45,
+    TraceId: Id_51,
[...]
-    Name: amqp.process,
-    Resource: basic.get <generated>,
+    Name: amqp.command,
+    Resource: queue.declare,
[...]
-    ParentId: Id_46,
+    ParentId: Id_52,
[...]
-      amqp.command: basic.get,
-      amqp.queue: AmqQueue_3
+      amqp.command: queue.declare,
+      amqp.queue: test-queue-name,
[...]
-      span.kind: consumer,
-      version: 1.0.0
+      out.host: rabbitmq,
+      peer.service: rabbitmq,
+      span.kind: client,
+      version: 1.0.0,
+      _dd.peer.service.source: out.host
[...]
-    TraceId: Id_47,
+    TraceId: Id_51,
[...]
-    Resource: basic.get <generated>,
+    Resource: basic.get test-queue-name,
[...]
-    ParentId: Id_48,
+    ParentId: Id_52,
[...]
-      amqp.queue: AmqQueue_4
+      amqp.queue: test-queue-name,

3 occurrences of :

-    TraceId: Id_41,
+    TraceId: Id_51,
[...]
-    Resource: basic.publish <default> -> <generated>,
+    Resource: basic.publish test-exchange-name -> test-routing-key,
[...]
-    ParentId: Id_42,
+    ParentId: Id_52,
[...]
-      amqp.exchange: ,
-      amqp.routing_key: AmqQueue_1
+      amqp.exchange: test-exchange-name,
+      amqp.routing_key: test-routing-key,
[...]
-      message.size: 61,
+      message.size: 83,

3 occurrences of :

-    TraceId: Id_43,
+    TraceId: Id_51,
[...]
-    Name: amqp.send,
-    Resource: basic.publish <default> -> <generated>,
+    Name: amqp.process,
+    Resource: basic.get test-queue-name,
[...]
-    ParentId: Id_44,
+    ParentId: Id_57,
[...]
-      amqp.command: basic.publish,
-      amqp.exchange: ,
-      amqp.routing_key: AmqQueue_2
+      amqp.command: basic.get,
+      amqp.queue: test-queue-name,
[...]
-      message.size: 61,
-      out.host: rabbitmq,
-      peer.service: rabbitmq,
-      span.kind: producer,
-      version: 1.0.0,
-      _dd.peer.service.source: out.host
+      message.size: 83,
+      runtime-id: Guid_1,
+      span.kind: consumer,
+      version: 1.0.0
+    },
+    Metrics: {
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_45,
-    SpanId: Id_59,
-    Name: amqp.send,
-    Resource: basic.publish <default> -> <generated>,
+    TraceId: Id_59,
+    SpanId: Id_60,
+    Name: Program.PublishAndGetDefault(InternalSyncDerived, useDefaultQueue: True),
+    Resource: Program.PublishAndGetDefault(InternalSyncDerived, useDefaultQueue: True),
+    Service: Samples.RabbitMQ,
+    Tags: {
+      env: integration_tests,
+      language: dotnet,
+      runtime-id: Guid_1,
+      version: 1.0.0
+    },
+    Metrics: {
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
+    }
+  },
+  {
+    TraceId: Id_59,
+    SpanId: Id_61,
+    Name: amqp.command,
+    Resource: queue.declare,
[...]
-    ParentId: Id_46,
+    ParentId: Id_60,
[...]
-      amqp.command: basic.publish,
-      amqp.exchange: ,
-      amqp.routing_key: AmqQueue_3
+      amqp.command: queue.declare,
+      amqp.queue: ,
[...]
-      message.size: 61,
[...]
-      span.kind: producer,
+      span.kind: client,
[...]
-    TraceId: Id_47,
-    SpanId: Id_60,
+    TraceId: Id_59,
+    SpanId: Id_62,
+    Name: amqp.process,
+    Resource: basic.get <generated>,
+    Service: Samples.RabbitMQ,
+    Type: queue,
+    ParentId: Id_60,
+    Tags: {
+      amqp.command: basic.get,
+      amqp.queue: AmqQueue_10
+      component: RabbitMQ,
+      env: integration_tests,
+      language: dotnet,
+      span.kind: consumer,
+      version: 1.0.0
+    }
+  },
+  {
+    TraceId: Id_59,
+    SpanId: Id_63,
[...]
-    ParentId: Id_48,
+    ParentId: Id_60,
[...]
-      amqp.routing_key: AmqQueue_4
+      amqp.routing_key: AmqQueue_10
[...]
-      message.size: 61,
+      message.size: 82,

3 occurrences of :

-    TraceId: Id_41,
-    SpanId: Id_61,
+    TraceId: Id_59,
+    SpanId: Id_64,
[...]
-    ParentId: Id_57,
+    ParentId: Id_63,
[...]
-      amqp.queue: AmqQueue_1
+      amqp.queue: AmqQueue_10
[...]
-      message.size: 61,
+      message.size: 82,

3 occurrences of :

-    TraceId: Id_43,
-    SpanId: Id_62,
-    Name: amqp.process,
-    Resource: basic.get <generated>,
+    TraceId: Id_65,
+    SpanId: Id_66,
+    Name: PublishToConsumer(ExternalExplicit, i: 0),
+    Resource: PublishToConsumer(ExternalExplicit, i: 0),
[...]
-    Type: queue,
-    ParentId: Id_58,
[...]
-      amqp.command: basic.get,
-      amqp.queue: AmqQueue_2
-      component: RabbitMQ,
[...]
-      message.size: 61,
[...]
-      span.kind: consumer,

3 occurrences of :

-    TraceId: Id_45,
-    SpanId: Id_63,
-    Name: amqp.process,
-    Resource: basic.get <generated>,
+    TraceId: Id_65,
+    SpanId: Id_67,
+    Name: amqp.send,
+    Resource: basic.publish <default> -> hello,
[...]
-    ParentId: Id_59,
+    ParentId: Id_66,
[...]
-      amqp.command: basic.get,
-      amqp.queue: AmqQueue_3
+      amqp.command: basic.publish,
+      amqp.exchange: ,
+      amqp.routing_key: hello,
[...]
-      message.size: 61,
-      runtime-id: Guid_1,
-      span.kind: consumer,
-      version: 1.0.0
-    },
-    Metrics: {
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      message.size: 17,
+      out.host: rabbitmq,
+      peer.service: rabbitmq,
+      span.kind: producer,
+      version: 1.0.0,
+      _dd.peer.service.source: out.host
[...]
-    TraceId: Id_47,
-    SpanId: Id_64,
+    TraceId: Id_65,
+    SpanId: Id_68,
[...]
-    Resource: basic.get <generated>,
+    Resource: basic.deliver,
[...]
-    ParentId: Id_60,
+    ParentId: Id_67,
[...]
-      amqp.command: basic.get,
-      amqp.queue: AmqQueue_4
+      amqp.command: basic.deliver,
+      amqp.exchange: ,
+      amqp.queue: hello,
+      amqp.routing_key: hello,
[...]
-      message.size: 61,
+      message.size: 17,

3 occurrences of :

-    SpanId: Id_66,
-    Name: PublishToConsumer(),
-    Resource: PublishToConsumer(),
+    SpanId: Id_69,
+    Name: consumer.Received event,
+    Resource: consumer.Received event,
[...]
+    ParentId: Id_67,

3 occurrences of :

-    TraceId: Id_67,
-    SpanId: Id_68,
-    Name: PublishToConsumer(),
-    Resource: PublishToConsumer(),
+    TraceId: Id_70,
+    SpanId: Id_71,
+    Name: PublishToConsumer(ExternalExplicit, i: 1),
+    Resource: PublishToConsumer(ExternalExplicit, i: 1),

3 occurrences of :

-    TraceId: Id_69,
-    SpanId: Id_70,
-    Name: PublishToConsumer(),
-    Resource: PublishToConsumer(),
+    TraceId: Id_70,
+    SpanId: Id_72,
+    Name: amqp.send,
+    Resource: basic.publish <default> -> hello,
[...]
+    Type: queue,
+    ParentId: Id_71,
[...]
+      amqp.command: basic.publish,
+      amqp.exchange: ,
+      amqp.routing_key: hello,
+      component: RabbitMQ,
[...]
-      runtime-id: Guid_1,
-      version: 1.0.0
-    },
-    Metrics: {
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      message.size: 17,
+      out.host: rabbitmq,
+      peer.service: rabbitmq,
+      span.kind: producer,
+      version: 1.0.0,
+      _dd.peer.service.source: out.host
[...]
-    TraceId: Id_71,
-    SpanId: Id_72,
-    Name: PublishToConsumer(),
-    Resource: PublishToConsumer(),
+    TraceId: Id_70,
+    SpanId: Id_73,
+    Name: amqp.process,
+    Resource: basic.deliver,
[...]
+    Type: queue,
+    ParentId: Id_72,
[...]
+      amqp.command: basic.deliver,
+      amqp.exchange: ,
+      amqp.queue: hello,
+      amqp.routing_key: hello,
+      component: RabbitMQ,
[...]
+      message.size: 17,
[...]
+      span.kind: consumer,

3 occurrences of :

-    TraceId: Id_73,
+    TraceId: Id_70,
[...]
-    Name: PublishToConsumer(),
-    Resource: PublishToConsumer(),
+    Name: consumer.Received event,
+    Resource: consumer.Received event,
[...]
+    ParentId: Id_72,

3 occurrences of :

-    Name: PublishToConsumer(),
-    Resource: PublishToConsumer(),
+    Name: PublishToConsumer(ExternalExplicit, i: 2),
+    Resource: PublishToConsumer(ExternalExplicit, i: 2),

3 occurrences of :

-    TraceId: Id_77,
-    SpanId: Id_78,
-    Name: PublishToConsumer(),
-    Resource: PublishToConsumer(),
-    Service: Samples.RabbitMQ,
-    Tags: {
-      env: integration_tests,
-      language: dotnet,
-      runtime-id: Guid_1,
-      version: 1.0.0
-    },
-    Metrics: {
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
-    }
-  },
-  {
-    TraceId: Id_79,
-    SpanId: Id_80,
-    Name: PublishToConsumer(),
-    Resource: PublishToConsumer(),
-    Service: Samples.RabbitMQ,
-    Tags: {
-      env: integration_tests,
-      language: dotnet,
-      runtime-id: Guid_1,
-      version: 1.0.0
-    },
-    Metrics: {
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
-    }
-  },
-  {
-    TraceId: Id_81,
-    SpanId: Id_82,
-    Name: PublishToConsumer(),
-    Resource: PublishToConsumer(),
+    TraceId: Id_75,
+    SpanId: Id_77,
+    Name: amqp.send,
+    Resource: basic.publish <default> -> hello,
[...]
+    Type: queue,
+    ParentId: Id_76,
[...]
+      amqp.command: basic.publish,
+      amqp.exchange: ,
+      amqp.routing_key: hello,
+      component: RabbitMQ,
[...]
-      runtime-id: Guid_1,
-      version: 1.0.0
-    },
-    Metrics: {
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      message.size: 17,
+      out.host: rabbitmq,
+      peer.service: rabbitmq,
+      span.kind: producer,
+      version: 1.0.0,
+      _dd.peer.service.source: out.host
[...]
-    TraceId: Id_83,
-    SpanId: Id_84,
-    Name: PublishToConsumer(),
-    Resource: PublishToConsumer(),
+    TraceId: Id_75,
+    SpanId: Id_78,
+    Name: amqp.process,
+    Resource: basic.deliver,
[...]
+    Type: queue,
+    ParentId: Id_77,
[...]
+      amqp.command: basic.deliver,
+      amqp.exchange: ,
+      amqp.queue: hello,
+      amqp.routing_key: hello,
+      component: RabbitMQ,
[...]
+      message.size: 17,
[...]
+      span.kind: consumer,

3 occurrences of :

-    TraceId: Id_85,
-    SpanId: Id_86,
-    Name: PublishToConsumer(),
-    Resource: PublishToConsumer(),
+    TraceId: Id_75,
+    SpanId: Id_79,
+    Name: consumer.Received event,
+    Resource: consumer.Received event,
[...]
+    ParentId: Id_77,

3 occurrences of :

-    TraceId: Id_87,
-    SpanId: Id_88,
-    Name: PublishToConsumer(),
-    Resource: PublishToConsumer(),
+    TraceId: Id_80,
+    SpanId: Id_81,
+    Name: PublishToConsumer(ExternalImplicit, i: 0),
+    Resource: PublishToConsumer(ExternalImplicit, i: 0),

3 occurrences of :

-    TraceId: Id_65,
-    SpanId: Id_89,
-    Name: amqp.send,
-    Resource: basic.publish <default> -> hello,
-    Service: Samples.RabbitMQ,
-    Type: queue,
-    ParentId: Id_66,
-    Tags: {
-      amqp.command: basic.publish,
-      amqp.exchange: ,
-      amqp.routing_key: hello,
-      component: RabbitMQ,
-      env: integration_tests,
-      language: dotnet,
-      message.size: 17,
-      out.host: rabbitmq,
-      peer.service: rabbitmq,
-      span.kind: producer,
-      version: 1.0.0,
-      _dd.peer.service.source: out.host
-    }
-  },
-  {
-    TraceId: Id_67,
-    SpanId: Id_90,
-    Name: amqp.send,
-    Resource: basic.publish <default> -> hello,
-    Service: Samples.RabbitMQ,
-    Type: queue,
-    ParentId: Id_68,
-    Tags: {
-      amqp.command: basic.publish,
-      amqp.exchange: ,
-      amqp.routing_key: hello,
-      component: RabbitMQ,
-      env: integration_tests,
-      language: dotnet,
-      message.size: 17,
-      out.host: rabbitmq,
-      peer.service: rabbitmq,
-      span.kind: producer,
-      version: 1.0.0,
-      _dd.peer.service.source: out.host
-    }
-  },
-  {
-    TraceId: Id_69,
-    SpanId: Id_91,
+    TraceId: Id_80,
+    SpanId: Id_82,
[...]
-    ParentId: Id_70,
+    ParentId: Id_81,

3 occurrences of :

-    TraceId: Id_71,
-    SpanId: Id_92,
-    Name: amqp.send,
-    Resource: basic.publish <default> -> hello,
+    TraceId: Id_80,
+    SpanId: Id_83,
+    Name: amqp.process,
+    Resource: basic.deliver,
[...]
-    ParentId: Id_72,
+    ParentId: Id_82,
[...]
-      amqp.command: basic.publish,
+      amqp.command: basic.deliver,
[...]
+      amqp.queue: hello,
[...]
-      out.host: rabbitmq,
-      peer.service: rabbitmq,
-      span.kind: producer,
-      version: 1.0.0,
-      _dd.peer.service.source: out.host
+      runtime-id: Guid_1,
+      span.kind: consumer,
+      version: 1.0.0
+    },
+    Metrics: {
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_73,
-    SpanId: Id_93,
-    Name: amqp.send,
-    Resource: basic.publish <default> -> hello,
+    TraceId: Id_80,
+    SpanId: Id_84,
+    Name: consumer.Received event,
+    Resource: consumer.Received event,
[...]
-    Type: queue,
-    ParentId: Id_74,
+    ParentId: Id_82,
[...]
-      amqp.command: basic.publish,
-      amqp.exchange: ,
-      amqp.routing_key: hello,
-      component: RabbitMQ,
[...]
-      message.size: 17,
-      out.host: rabbitmq,
-      peer.service: rabbitmq,
-      span.kind: producer,
-      version: 1.0.0,
-      _dd.peer.service.source: out.host
+      runtime-id: Guid_1,
+      version: 1.0.0
+    },
+    Metrics: {
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_75,
-    SpanId: Id_94,
-    Name: amqp.send,
-    Resource: basic.publish <default> -> hello,
+    TraceId: Id_85,
+    SpanId: Id_86,
+    Name: PublishToConsumer(ExternalImplicit, i: 1),
+    Resource: PublishToConsumer(ExternalImplicit, i: 1),
[...]
-    Type: queue,
-    ParentId: Id_76,
[...]
-      amqp.command: basic.publish,
-      amqp.exchange: ,
-      amqp.routing_key: hello,
-      component: RabbitMQ,
[...]
-      message.size: 17,
-      out.host: rabbitmq,
-      peer.service: rabbitmq,
-      span.kind: producer,
-      version: 1.0.0,
-      _dd.peer.service.source: out.host
+      runtime-id: Guid_1,
+      version: 1.0.0
+    },
+    Metrics: {
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_77,
-    SpanId: Id_95,
+    TraceId: Id_85,
+    SpanId: Id_87,
[...]
-    ParentId: Id_78,
+    ParentId: Id_86,

3 occurrences of :

-    TraceId: Id_79,
-    SpanId: Id_96,
-    Name: amqp.send,
-    Resource: basic.publish <default> -> hello,
+    TraceId: Id_85,
+    SpanId: Id_88,
+    Name: amqp.process,
+    Resource: basic.deliver,
[...]
-    ParentId: Id_80,
+    ParentId: Id_87,
[...]
-      amqp.command: basic.publish,
+      amqp.command: basic.deliver,
[...]
+      amqp.queue: hello,
[...]
-      out.host: rabbitmq,
-      peer.service: rabbitmq,
-      span.kind: producer,
-      version: 1.0.0,
-      _dd.peer.service.source: out.host
+      runtime-id: Guid_1,
+      span.kind: consumer,
+      version: 1.0.0
+    },
+    Metrics: {
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_81,
-    SpanId: Id_97,
-    Name: amqp.send,
-    Resource: basic.publish <default> -> hello,
+    TraceId: Id_85,
+    SpanId: Id_89,
+    Name: consumer.Received event,
+    Resource: consumer.Received event,
[...]
-    Type: queue,
-    ParentId: Id_82,
+    ParentId: Id_87,
[...]
-      amqp.command: basic.publish,
-      amqp.exchange: ,
-      amqp.routing_key: hello,
-      component: RabbitMQ,
[...]
-      message.size: 17,
-      out.host: rabbitmq,
-      peer.service: rabbitmq,
-      span.kind: producer,
-      version: 1.0.0,
-      _dd.peer.service.source: out.host
+      runtime-id: Guid_1,
+      version: 1.0.0
+    },
+    Metrics: {
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_83,
-    SpanId: Id_98,
-    Name: amqp.send,
-    Resource: basic.publish <default> -> hello,
+    TraceId: Id_90,
+    SpanId: Id_91,
+    Name: PublishToConsumer(ExternalImplicit, i: 2),
+    Resource: PublishToConsumer(ExternalImplicit, i: 2),
[...]
-    Type: queue,
-    ParentId: Id_84,
[...]
-      amqp.command: basic.publish,
-      amqp.exchange: ,
-      amqp.routing_key: hello,
-      component: RabbitMQ,
[...]
-      message.size: 17,
-      out.host: rabbitmq,
-      peer.service: rabbitmq,
-      span.kind: producer,
-      version: 1.0.0,
-      _dd.peer.service.source: out.host
+      runtime-id: Guid_1,
+      version: 1.0.0
+    },
+    Metrics: {
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_85,
-    SpanId: Id_99,
+    TraceId: Id_90,
+    SpanId: Id_92,
[...]
-    ParentId: Id_86,
+    ParentId: Id_91,

3 occurrences of :

-    TraceId: Id_87,
-    SpanId: Id_100,
-    Name: amqp.send,
-    Resource: basic.publish <default> -> hello,
+    TraceId: Id_90,
+    SpanId: Id_93,
+    Name: amqp.process,
+    Resource: basic.deliver,
[...]
-    ParentId: Id_88,
+    ParentId: Id_92,
[...]
-      amqp.command: basic.publish,
+      amqp.command: basic.deliver,
[...]
+      amqp.queue: hello,
[...]
-      out.host: rabbitmq,
-      peer.service: rabbitmq,
-      span.kind: producer,
-      version: 1.0.0,
-      _dd.peer.service.source: out.host
+      runtime-id: Guid_1,
+      span.kind: consumer,
+      version: 1.0.0
+    },
+    Metrics: {
+      process_id: 0,
+      _dd.top_level: 1.0,
+      _dd.tracer_kr: 1.0,
+      _sampling_priority_v1: 1.0
[...]
-    TraceId: Id_65,
-    SpanId: Id_101,
-    Name: amqp.process,
-    Resource: basic.deliver,
+    TraceId: Id_90,
+    SpanId: Id_94,
+    Name: consumer.Received event,
+    Resource: consumer.Received event,
[...]
-    Type: queue,
-    ParentId: Id_89,
+    ParentId: Id_92,
[...]
-      amqp.command: basic.deliver,
-      amqp.exchange: ,
-      amqp.queue: hello,
-      amqp.routing_key: hello,
-      component: RabbitMQ,
[...]
-      message.size: 17,
[...]
-      span.kind: consumer,

3 occurrences of :

-    TraceId: Id_67,
-    SpanId: Id_102,
-    Name: amqp.process,
-    Resource: basic.deliver,
+    TraceId: Id_95,
+    SpanId: Id_96,
+    Name: PublishToConsumer(InternalAsyncDerived, i: 0),
+    Resource: PublishToConsumer(InternalAsyncDerived, i: 0),
[...]
-    Type: queue,
-    ParentId: Id_90,
[...]
-      amqp.command: basic.deliver,
-      amqp.exchange: ,
-      amqp.queue: hello,
-      amqp.routing_key: hello,
-      component: RabbitMQ,
[...]
-      message.size: 17,
[...]
-      span.kind: consumer,

3 occurrences of :

-    TraceId: Id_69,
-    SpanId: Id_103,
-    Name: amqp.process,
-    Resource: basic.deliver,
+    TraceId: Id_95,
+    SpanId: Id_97,
+    Name: amqp.send,
+    Resource: basic.publish <default> -> hello,
[...]
-    ParentId: Id_91,
+    ParentId: Id_96,
[...]
-      amqp.command: basic.deliver,
+      amqp.command: basic.publish,
[...]
-      amqp.queue: hello,
[...]
-      runtime-id: Guid_1,
-      span.kind: consumer,
-      version: 1.0.0
-    },
-    Metrics: {
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      out.host: rabbitmq,
+      peer.service: rabbitmq,
+      span.kind: producer,
+      version: 1.0.0,
+      _dd.peer.service.source: out.host
[...]
-    TraceId: Id_71,
-    SpanId: Id_104,
+    TraceId: Id_95,
+    SpanId: Id_98,
[...]
-    ParentId: Id_92,
+    ParentId: Id_97,

3 occurrences of :

-    TraceId: Id_73,
-    SpanId: Id_105,
-    Name: amqp.process,
-    Resource: basic.deliver,
+    TraceId: Id_95,
+    SpanId: Id_99,
+    Name: consumer.Received event,
+    Resource: consumer.Received event,
[...]
-    Type: queue,
-    ParentId: Id_93,
+    ParentId: Id_97,
[...]
-      amqp.command: basic.deliver,
-      amqp.exchange: ,
-      amqp.queue: hello,
-      amqp.routing_key: hello,
-      component: RabbitMQ,
[...]
-      message.size: 17,
[...]
-      span.kind: consumer,

3 occurrences of :

-    TraceId: Id_75,
-    SpanId: Id_106,
-    Name: amqp.process,
-    Resource: basic.deliver,
+    TraceId: Id_100,
+    SpanId: Id_101,
+    Name: PublishToConsumer(InternalAsyncDerived, i: 1),
+    Resource: PublishToConsumer(InternalAsyncDerived, i: 1),
[...]
-    Type: queue,
-    ParentId: Id_94,
[...]
-      amqp.command: basic.deliver,
-      amqp.exchange: ,
-      amqp.queue: hello,
-      amqp.routing_key: hello,
-      component: RabbitMQ,
[...]
-      message.size: 17,
[...]
-      span.kind: consumer,

3 occurrences of :

-    TraceId: Id_77,
-    SpanId: Id_107,
-    Name: amqp.process,
-    Resource: basic.deliver,
+    TraceId: Id_100,
+    SpanId: Id_102,
+    Name: amqp.send,
+    Resource: basic.publish <default> -> hello,
[...]
-    ParentId: Id_95,
+    ParentId: Id_101,
[...]
-      amqp.command: basic.deliver,
+      amqp.command: basic.publish,
[...]
-      amqp.queue: hello,
[...]
-      runtime-id: Guid_1,
-      span.kind: consumer,
-      version: 1.0.0
-    },
-    Metrics: {
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      out.host: rabbitmq,
+      peer.service: rabbitmq,
+      span.kind: producer,
+      version: 1.0.0,
+      _dd.peer.service.source: out.host
[...]
-    TraceId: Id_79,
-    SpanId: Id_108,
+    TraceId: Id_100,
+    SpanId: Id_103,
[...]
-    ParentId: Id_96,
+    ParentId: Id_102,

3 occurrences of :

-    TraceId: Id_81,
-    SpanId: Id_109,
-    Name: amqp.process,
-    Resource: basic.deliver,
+    TraceId: Id_100,
+    SpanId: Id_104,
+    Name: consumer.Received event,
+    Resource: consumer.Received event,
[...]
-    Type: queue,
-    ParentId: Id_97,
+    ParentId: Id_102,
[...]
-      amqp.command: basic.deliver,
-      amqp.exchange: ,
-      amqp.queue: hello,
-      amqp.routing_key: hello,
-      component: RabbitMQ,
[...]
-      message.size: 17,
[...]
-      span.kind: consumer,

3 occurrences of :

-    TraceId: Id_83,
-    SpanId: Id_110,
-    Name: amqp.process,
-    Resource: basic.deliver,
+    TraceId: Id_105,
+    SpanId: Id_106,
+    Name: PublishToConsumer(InternalAsyncDerived, i: 2),
+    Resource: PublishToConsumer(InternalAsyncDerived, i: 2),
[...]
-    Type: queue,
-    ParentId: Id_98,
[...]
-      amqp.command: basic.deliver,
-      amqp.exchange: ,
-      amqp.queue: hello,
-      amqp.routing_key: hello,
-      component: RabbitMQ,
[...]
-      message.size: 17,
[...]
-      span.kind: consumer,

3 occurrences of :

-    TraceId: Id_85,
-    SpanId: Id_111,
-    Name: amqp.process,
-    Resource: basic.deliver,
+    TraceId: Id_105,
+    SpanId: Id_107,
+    Name: amqp.send,
+    Resource: basic.publish <default> -> hello,
[...]
-    ParentId: Id_99,
+    ParentId: Id_106,
[...]
-      amqp.command: basic.deliver,
+      amqp.command: basic.publish,
[...]
-      amqp.queue: hello,
[...]
-      runtime-id: Guid_1,
-      span.kind: consumer,
-      version: 1.0.0
-    },
-    Metrics: {
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      out.host: rabbitmq,
+      peer.service: rabbitmq,
+      span.kind: producer,
+      version: 1.0.0,
+      _dd.peer.service.source: out.host
[...]
-    TraceId: Id_87,
-    SpanId: Id_112,
+    TraceId: Id_105,
+    SpanId: Id_108,
[...]
-    ParentId: Id_100,
+    ParentId: Id_107,

3 occurrences of :

-    TraceId: Id_69,
-    SpanId: Id_115,
-    Name: consumer.Received event,
-    Resource: consumer.Received event,
+    TraceId: Id_110,
+    SpanId: Id_112,
+    Name: amqp.send,
+    Resource: basic.publish <default> -> hello,
[...]
-    ParentId: Id_91,
+    Type: queue,
+    ParentId: Id_111,
[...]
+      amqp.command: basic.publish,
+      amqp.exchange: ,
+      amqp.routing_key: hello,
+      component: RabbitMQ,
[...]
-      runtime-id: Guid_1,
-      version: 1.0.0
-    },
-    Metrics: {
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      message.size: 17,
+      out.host: rabbitmq,
+      peer.service: rabbitmq,
+      span.kind: producer,
+      version: 1.0.0,
+      _dd.peer.service.source: out.host
[...]
-    TraceId: Id_71,
-    SpanId: Id_116,
-    Name: consumer.Received event,
-    Resource: consumer.Received event,
+    TraceId: Id_110,
+    SpanId: Id_113,
+    Name: amqp.process,
+    Resource: basic.deliver,
[...]
-    ParentId: Id_92,
+    Type: queue,
+    ParentId: Id_112,
[...]
+      amqp.command: basic.deliver,
+      amqp.exchange: ,
+      amqp.queue: hello,
+      amqp.routing_key: hello,
+      component: RabbitMQ,
[...]
+      message.size: 17,
[...]
+      span.kind: consumer,

3 occurrences of :

-    TraceId: Id_77,
-    SpanId: Id_119,
-    Name: consumer.Received event,
-    Resource: consumer.Received event,
+    TraceId: Id_115,
+    SpanId: Id_117,
+    Name: amqp.send,
+    Resource: basic.publish <default> -> hello,
+    Service: Samples.RabbitMQ,
+    Type: queue,
+    ParentId: Id_116,
+    Tags: {
+      amqp.command: basic.publish,
+      amqp.exchange: ,
+      amqp.routing_key: hello,
+      component: RabbitMQ,
+      env: integration_tests,
+      language: dotnet,
+      message.size: 17,
+      out.host: rabbitmq,
+      peer.service: rabbitmq,
+      span.kind: producer,
+      version: 1.0.0,
+      _dd.peer.service.source: out.host
+    }
+  },
+  {
+    TraceId: Id_115,
+    SpanId: Id_118,
+    Name: amqp.process,
+    Resource: basic.deliver,
[...]
-    ParentId: Id_95,
+    Type: queue,
+    ParentId: Id_117,
[...]
+      amqp.command: basic.deliver,
+      amqp.exchange: ,
+      amqp.queue: hello,
+      amqp.routing_key: hello,
+      component: RabbitMQ,
[...]
+      message.size: 17,
[...]
+      span.kind: consumer,

3 occurrences of :

-    TraceId: Id_83,
+    TraceId: Id_120,
[...]
-    Name: consumer.Received event,
-    Resource: consumer.Received event,
+    Name: amqp.send,
+    Resource: basic.publish <default> -> hello,
[...]
-    ParentId: Id_98,
+    Type: queue,
+    ParentId: Id_121,
[...]
+      amqp.command: basic.publish,
+      amqp.exchange: ,
+      amqp.routing_key: hello,
+      component: RabbitMQ,
[...]
-      runtime-id: Guid_1,
-      version: 1.0.0
-    },
-    Metrics: {
-      process_id: 0,
-      _dd.top_level: 1.0,
-      _dd.tracer_kr: 1.0,
-      _sampling_priority_v1: 1.0
+      message.size: 17,
+      out.host: rabbitmq,
+      peer.service: rabbitmq,
+      span.kind: producer,
+      version: 1.0.0,
+      _dd.peer.service.source: out.host
[...]
-    TraceId: Id_85,
+    TraceId: Id_120,
[...]
-    Name: consumer.Received event,
-    Resource: consumer.Received event,
+    Name: amqp.process,
+    Resource: basic.deliver,
[...]
-    ParentId: Id_99,
+    Type: queue,
+    ParentId: Id_122,
[...]
+      amqp.command: basic.deliver,
+      amqp.exchange: ,
+      amqp.queue: hello,
+      amqp.routing_key: hello,
+      component: RabbitMQ,
[...]
+      message.size: 17,
[...]
+      span.kind: consumer,

Copy link
Collaborator

@bouwkast bouwkast left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!

@datadog-datadog-prod-us1
Copy link

datadog-datadog-prod-us1 bot commented Mar 19, 2025

Datadog Report

Branch report: andrew/refactor-rabbitmq-sample
Commit report: bdc92df
Test service: dd-trace-dotnet

✅ 0 Failed, 254749 Passed, 2440 Skipped, 21h 0m 53.67s Total Time
❄️ 1 New Flaky

New Flaky Tests (1)

  • TracingDisabled_DoesNotSubmitsTraces - Datadog.Trace.ClrProfiler.IntegrationTests.HttpMessageHandlerTests - Last Failure

    Expand for error
     Expected exit code: 0, actual exit code: 139.
    

@andrewlock
Copy link
Member Author

Execution-Time Benchmarks Report ⏱️

Execution-time results for samples comparing the following branches/commits:

Execution-time benchmarks measure the whole time it takes to execute a program. And are intended to measure the one-off costs. Cases where the execution time results for the PR are worse than latest master results are shown in red. The following thresholds were used for comparing the execution times:

  • Welch test with statistical test for significance of 5%
  • Only results indicating a difference greater than 5% and 5 ms are considered.

Note that these results are based on a single point-in-time result for each branch. For full results, see the dashboard.

Graphs show the p99 interval based on the mean and StdDev of the test run, as well as the mean value of the run (shown as a diamond below the graph).

gantt
    title Execution time (ms) FakeDbCommand (.NET Framework 4.6.2) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6778) - mean (80ms)  : 74, 85
     .   : milestone, 80,
    master - mean (69ms)  : 65, 74
     .   : milestone, 69,

    section CallTarget+Inlining+NGEN
    This PR (6778) - mean (1,090ms)  : crit, 1058, 1123
     .   : crit, milestone, 1090,
    master - mean (1,002ms)  : 977, 1026
     .   : milestone, 1002,

Loading
gantt
    title Execution time (ms) FakeDbCommand (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6778) - mean (117ms)  : 111, 123
     .   : milestone, 117,
    master - mean (102ms)  : 100, 104
     .   : milestone, 102,

    section CallTarget+Inlining+NGEN
    This PR (6778) - mean (750ms)  : crit, 730, 771
     .   : crit, milestone, 750,
    master - mean (686ms)  : 665, 706
     .   : milestone, 686,

Loading
gantt
    title Execution time (ms) FakeDbCommand (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6778) - mean (102ms)  : 96, 108
     .   : milestone, 102,
    master - mean (89ms)  : 87, 91
     .   : milestone, 89,

    section CallTarget+Inlining+NGEN
    This PR (6778) - mean (705ms)  : crit, 685, 724
     .   : crit, milestone, 705,
    master - mean (642ms)  : 626, 659
     .   : milestone, 642,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET Framework 4.6.2) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6778) - mean (191ms)  : 187, 195
     .   : milestone, 191,
    master - mean (190ms)  : 186, 195
     .   : milestone, 190,

    section CallTarget+Inlining+NGEN
    This PR (6778) - mean (1,109ms)  : 1076, 1142
     .   : milestone, 1109,
    master - mean (1,109ms)  : 1078, 1139
     .   : milestone, 1109,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6778) - mean (269ms)  : 265, 274
     .   : milestone, 269,
    master - mean (269ms)  : 265, 274
     .   : milestone, 269,

    section CallTarget+Inlining+NGEN
    This PR (6778) - mean (871ms)  : 845, 897
     .   : milestone, 871,
    master - mean (876ms)  : 847, 904
     .   : milestone, 876,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Baseline
    This PR (6778) - mean (262ms)  : 259, 265
     .   : milestone, 262,
    master - mean (262ms)  : 258, 265
     .   : milestone, 262,

    section CallTarget+Inlining+NGEN
    This PR (6778) - mean (864ms)  : 825, 904
     .   : milestone, 864,
    master - mean (861ms)  : 824, 898
     .   : milestone, 861,

Loading

@andrewlock andrewlock merged commit 70c7327 into master Mar 19, 2025
127 of 130 checks passed
@andrewlock andrewlock deleted the andrew/refactor-rabbitmq-sample branch March 19, 2025 17:32
@github-actions github-actions bot added this to the vNext-v3 milestone Mar 19, 2025
ddyurchenko pushed a commit that referenced this pull request Mar 31, 2025
## Summary of changes

- Refactor RabbitMQ sample to reduce duplication
- Update manual spans to make hierarchy clearer and deterministic in
snapshots

## Reason for change

Was trying to debug a failure in #6753 and the snapshots were making it
too confusing

## Implementation details

- Created a RabbitMQ "Helper" that wraps the differences in APIs between
version
- The critical thing is that the v7 APIs are all async and the previous
version are all sync
- Previously we duplicated large amounts of code - this creates a helper
to encapsulate the differences
- ✅ Ran the snapshots at this point for all supported versions, and
confirmed that they still passed
- Updated the manual spans to make sure each one is unique
- Updated all the snapshots

## Test coverage

The coverage is the same, the samples are just refactored and the
snapshots updated.

## Other details

Previously, the top-level spans were all identical, and therefor the
sorting in the snapshots was non-deterministic:


![image](https://github.com/user-attachments/assets/e7748d42-af8a-49f3-a5d7-ae98e9d5b159)

After this PR, the manual root spans are all unique


![image](https://github.com/user-attachments/assets/088c1546-1c7e-4618-9ee6-a2b7b73dbde8)


Prerequisite for 
- #6753
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:integrations area:tests unit tests, integration tests area:tracer The core tracer library (Datadog.Trace, does not include OpenTracing, native code, or integrations) type:refactor
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants