Spring boot 双跨弹簧集成

Spring boot 双跨弹簧集成,spring-boot,spring-integration,spring-cloud,Spring Boot,Spring Integration,Spring Cloud,请求通道是分散通道。向3个微服务(出站网关)发送请求。我希望不同的服务能够正确跟踪不同的跨度。我在用斯普林侦探。使用DefaultHeaderMapper映射标头。 我的问题是: 1.如何生成span id,服务器/客户端在哪里?任何可供研究的参考文件。 2.如何解决spring集成中的重复span问题?发送消息时,在客户端生成span。然后,当消息到达时,它被传播。如果消息到达且没有消息头,则将创建范围。所有内容都写在文档()中,所以只需阅读文档即可。至于重复跨距的解决方案,我不知道您在说什么

请求通道是分散通道。向3个微服务(出站网关)发送请求。我希望不同的服务能够正确跟踪不同的跨度。我在用斯普林侦探。使用DefaultHeaderMapper映射标头。 我的问题是: 1.如何生成span id,服务器/客户端在哪里?任何可供研究的参考文件。
2.如何解决spring集成中的重复span问题?

发送消息时,在客户端生成span。然后,当消息到达时,它被传播。如果消息到达且没有消息头,则将创建范围。所有内容都写在文档()中,所以只需阅读文档即可。至于重复跨距的解决方案,我不知道您在说什么,所以我想您需要提供更详细的描述或示例来复制问题。

>向3个微服务发送请求,我想您可以通过
PublishSubscribeChannel
来实现。在这种情况下,同一条消息被发送了3次,因此,我们有3份副本,并且显然有相同的标题,包括
span
。我不知道它是如何工作的,但是IMO你应该考虑使用<代码>子跨度< /> >,因为相同的父消息被发送到不同的下游分支。或将当前的
span
复制粘贴到每个发布-订阅分支的新路径。是的,publishSubscribe通道是所有3个出站网关的请求通道。我已经提供了有关我的问题的更多详细信息,如果您能提供帮助,请查找详细信息。我想您必须创建自己的
GlobalChannelInterceptor
,它在
tracechannelterceptor
之前执行,在您的拦截器中,您可以做任何您想做的事情。然而,我不明白你想解决什么问题。在消息传递场景中,将具有相同Span ID的消息发送给多个收件人是完全有效的……了解了Sleuth的工作原理。若TraceId、SpanId未传递到头中,则它们将在服务器端生成。所以我试图从标题中删除SpanId to。当我使用defaultHttpHeaderMapper时,有一种方法可以排除header.WARN o.s.I.h.s.defaultHttpHeaderMapper-带有值的header'errorChannel------带有值的WARN o.s.I.h.s.defaultHttpHeaderMapper-带有值的header'currentSpan'[跟踪:5CD1817FB7F77F47F47,跨度:0744723df67d9f43,父级:5cd1817fb7f77f47,可导出:false]”----警告o.s.i.h.s.DefaultHttpHeaderMapper-标题“X-Current-Span”,带值“[跟踪:5CD1817FB7F77F77F47,跨度:074472DF67D9F43,父级:5CD1817FB7F77F77,可导出:false]'但我找不到从何处创建X-Current-Span,currentSpan并将其设置为DeafultHeaderMapper。这再次引发了另一个问题:如何删除这些头并传递X-B3-TraceId,以避免在服务器中重新创建跟踪。