当发送者发送帖子时,我需要通知多个订阅者。在这种情况下,发送者发送一个post。是一个HTTP post,并创建一个trace
.
我的目标:当查看我的日志时,我将知道创建此日志通知的方法是哪个订阅者。
我天真的想法是:对于每一个"通知订阅者a"、"通知订阅者b"等,它们都是span
s的一个子树。如果我能把tag
赋给这些张成的子树那么我就完成了
然而,我不知道该怎么做。或者,还有其他方法可以实现我的目标吗?
谢谢!
如果我理解了您在这里试图实现的目标,那就是Sleuth的默认行为,请查看文档中的trace-span和父子跨度关系。
您唯一需要做的就是在每次通知订阅者时创建一个新的Span。有多种方法可以做到这一点,请参阅文档(例如: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);
}
如果你想给你的span加标签,请点击我上面的文档链接,它会告诉你如何加标签。