如何强制侦听不发送单个b3标头

时间:2020-03-26 14:09:17

标签: java spring-boot spring-cloud-sleuth

我在Spring Boot应用程序中使用sleuth进行日志跟踪,并且我的应用程序还通过Active MQ发送一些消息,但是当我看到消息属性时,它使用单个b3标头发送跟踪。 如何配置sleuth来分隔标题?

2 个答案:

答案 0 :(得分:1)

默认值不仅具有更好的性能,而且不违反JMS标头名称规则。我建议您弄清楚为什么不能使用b3 single。

如果必须使用多个标头,则可以执行以下操作:

@Bean Propagation.Factory customPropagationFactory() {
  return B3Propagation.newFactoryBuilder()
      .injectFormat(Span.Kind.PRODUCER, Format.MULTI)
      .injectFormat(Span.Kind.CONSUMER, Format.MULTI)
      .build();
}

答案 1 :(得分:-1)

如果您希望 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