有两个用 Go 编写的服务。第一个将一些事件写入兔子队列,第二个从这个队列中读取并对消息进行一些处理。
我想跟踪哨兵中每条消息的生命周期。在第一次服务方面,这是基本的。但是我如何通过队列传递跨度?
如果您使用开放式跟踪解决相同的问题,那么一切都很简单:
span := tracer.StartSpan("first")
carrier := opentracing.TextMapCarrier{}
span.Tracer().Inject(span.Context(), opentracing.TextMap, carrier)
second(carrier["uber-trace-id"])
func second(token string) {
carrier := opentracing.TextMapCarrier{}
carrier.Set("uber-trace-id", token)
ctx, _ := opentracing.GlobalTracer().Extract(opentracing.TextMap, carrier)
span := opentracing.StartSpan("second", opentracing.FollowsFrom(ctx))
span.Tracer().Inject(span.Context(), opentracing.TextMap, carrier)
但是我不明白在使用哨兵的情况下如何创建在第二个服务中继承的对象