如何在springcloudsleuth中标记跨度的子树?或者,如何细分轨迹?

hujrc8aj  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(332)

当一个发送者发送邮件时,我需要通知多个订户。在本例中,“sender sends a post”是一个http post并创建一个 trace .
我的目标是:在查看我的日志时,我将知道“哪个订户是创建此日志的方法”。
我天真的想法:对于“通知订户a”、“通知订户b”等,它们都是 span s。如果我能给你 tag 在每一个跨度的子树上,我就完成了。
但是,我不知道怎么做。或者,有没有其他方法来实现我的目标?
谢谢!

vybvopom

vybvopom1#

如果我理解您在这里试图实现的目标,这是sleuth的默认行为,请查看跟踪范围和父子范围关系的文档。
您只需在每次通知订户时创建一个新的范围。有多种方法可以做到这一点,请参阅文档(例如: tracer.withSpan , @NewSpan ).
下面是一个虚构的例子:

@GetMapping("/something") // Sleuth has already created a span for your endpoint
public void something() {
    subscribers.forEach(subscriber -> notify(subscriber, new Event("foo")));
}

@NewSpan // This does the trick
public void notify(Subscriber subscriber, Event event) {
    subscriber.notify(event);
}

如果你想标记你的跨度,请检查链接到我把上面的文件,它会告诉你如何附加标签。

相关问题