如何强制侦探不发送单个 b3 header
how to force sleuth not send in single b3 header
我在我的 Spring 引导应用程序中使用 sleuth 进行日志跟踪,我的应用程序也通过 Active MQ 发送一些消息,但是当我看到消息属性时,它会使用单个 b3 发送跟踪header。
我如何配置 sleuth 来分离 headers?
默认不仅性能更好,而且不违反 JMS header 名称规则。我建议你弄清楚为什么你不能使用 b3 single。
如果你必须使用多个 headers,你可以这样做:
@Bean Propagation.Factory customPropagationFactory() {
return B3Propagation.newFactoryBuilder()
.injectFormat(Span.Kind.PRODUCER, Format.MULTI)
.injectFormat(Span.Kind.CONSUMER, Format.MULTI)
.build();
}
如果您希望 spring.sleuth.baggage.xxx
应用程序属性起作用,那么您需要将传播工厂包装在行李传播工厂中:
@Bean
public BaggagePropagation.FactoryBuilder baggagePropagationFactoryBuilder() {
Propagation.Factory b3Factory = B3Propagation.newFactoryBuilder()
.injectFormat(Span.Kind.PRODUCER, B3Propagation.Format.MULTI)
.injectFormat(Span.Kind.CONSUMER, B3Propagation.Format.MULTI)
.build();
return BaggagePropagation.newFactoryBuilder(b3Factory);
}
请参阅 TraceBaggageConfiguration.baggagePropagationFactoryBuilder()
上的 javadoc
我在我的 Spring 引导应用程序中使用 sleuth 进行日志跟踪,我的应用程序也通过 Active MQ 发送一些消息,但是当我看到消息属性时,它会使用单个 b3 发送跟踪header。 我如何配置 sleuth 来分离 headers?
默认不仅性能更好,而且不违反 JMS header 名称规则。我建议你弄清楚为什么你不能使用 b3 single。
如果你必须使用多个 headers,你可以这样做:
@Bean Propagation.Factory customPropagationFactory() {
return B3Propagation.newFactoryBuilder()
.injectFormat(Span.Kind.PRODUCER, Format.MULTI)
.injectFormat(Span.Kind.CONSUMER, Format.MULTI)
.build();
}
如果您希望 spring.sleuth.baggage.xxx
应用程序属性起作用,那么您需要将传播工厂包装在行李传播工厂中:
@Bean
public BaggagePropagation.FactoryBuilder baggagePropagationFactoryBuilder() {
Propagation.Factory b3Factory = B3Propagation.newFactoryBuilder()
.injectFormat(Span.Kind.PRODUCER, B3Propagation.Format.MULTI)
.injectFormat(Span.Kind.CONSUMER, B3Propagation.Format.MULTI)
.build();
return BaggagePropagation.newFactoryBuilder(b3Factory);
}
请参阅 TraceBaggageConfiguration.baggagePropagationFactoryBuilder()