Skip to content

[Feature] 接入 OpenTelemetry 链路追踪,方便消息跟踪 #703

@sduo

Description

@sduo

Programming Language of the Client

C#

Is Your Feature Request Related to a Problem?

C# 客户端无法对消息进行追踪

Describe the Solution You'd Like

通过向 DiagnosticListener 写入相关事件,为消息加入相关的追踪数据。

Describe Alternatives You've Considered

=== SDK 修改开始 ===

  1. 定义一个名称为 Org.Apache.Rocketmq 的 DiagnosticListener。
  2. 在 ClientManager 发送消息时,向 DiagnosticSource 中写入 SendMessage 事件,载荷为当次发送的所有消息的数组。
  3. 在 ClientManager 接收消息时,向 DiagnosticSource 中写入 ReceiveMessage 事件,载荷为当次接收的所有消息的数组。
    === SDK 修改完毕 ===

=== OpenTelemetry 实现开始 ===
4. 此时可在外部对通过 DiagnosticListener 订阅名称为 Org.Apache.Rocketmq 的事件。
5. 在 SendMessage 事件中,依次遍历载荷中的消息,判断消息的 SystemProperties.TraceContext 是否包含相关数据。
5.1 包含跟踪数据,不做任何处理,放行即可。
5.2 不包含跟踪数据,写入跟踪信息,并上报。
6. 在 ReceiveMessage 事件中,依次遍历载荷中的消息,判断消息的 SystemProperties.TraceContext 是否包含相关数据。
6.1 不包含跟踪数据,不做任何处理,放行即可。
6.2 包含跟踪数据,读取跟踪信息,并上报。
=== OpenTelemetry 实现完毕 ===

Additional Context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions