本源码来自于skywalking-agent 8.9.0版本
注:本篇文章主要是作为自己看书后的总结,内容有可能会存在一些个人理解上的偏差,如果有网友找出问题欢迎提出,感谢!!!如果我理解上的错误误导了您,在此表示抱歉!!!
这部分的内容会涉及到 轻量级队列link的内容。这里主要讲述trace数据在agent端发送时涉及到的类。
TracingContextListener
在afterFinished方法内将Trace Segment数据通过DataCarrier放入 channels中。
IConsumer
在consume方法内将channels中的数据进行消费。
TraceSegmentServiceClient
实现IConsumer 、TracingContextListener、GRPCChannelListener接口。
TraceSegmentServiceClient负责将 TraceSegment数据异步发送到OAP。这部分在 TraceSegmentServiceClient#consume里面处理,包含#onNext(发送)、#onError(发送异常)、#onCompleted(成功发送)
TraceSegmentServiceClient#afterFinished会将 Trace Segment数据放入DataCarrier。
TraceSegmentServiceClient#statusChanged,当状态为连接成功时会发布一个订阅任务,用于提交Trace Segment数据。
ConsumerThread
ConsumerThread继承 Thread,在 run方法内部会通过调用 IConsumer#consume 去消费 dataSources 。ConsumerThread通过 IConsumer与TraceSegmentServiceClient关联。