Spring Sleuth 不会将 traceid 和 spanid 填充到 RabbitHandler

Spring Sleuth does not populate traceid and spanid to RabbitHandler

我们想将 spring sleuth 与 spring-amqp (rabbitmq) 一起使用。 所以我们通过

在发布者网站上发送消息
amqpTemplate.convertAndSend("exchange", "key", myEvent)

并希望 traceidspanid 与兔子消息一起发送并填充在 receiver/listener 站点上,因此它也会被记录在侦听器站点上。

@RabbitHandler
public void on(MyEvent event) {
  LOGGER.warn("got a message...");
  ...
}

根据 this article,我希望它可以开箱即用。

如果我直接(通过跟踪)检查 RabbitMQ 消息,那么我可以看到该信息在消息中不可用,因此很可能是发件人站点有问题...

我想到的一件事是,我们配置了 Jackson2JsonMessageConverter 以允许 json 有效负载:

@Bean
public Jackson2JsonMessageConverter jacksonConverter(ObjectMapper objectMapper) {
    return new Jackson2JsonMessageConverter(objectMapper);
}

顺便说一句。 log4j 模式使用 %X 配置并打印信息(如果可用):

<PatternLayout pattern="%d{HH:mm:ss.SSS} %X [%thread] %-5level %logger{36} - %msg%n" />

我错过了什么?

你错过了这句话的最后一段

requests over messaging technologies like Apache Kafka or RabbitMQ (or any other Spring Cloud Stream binder

Sleuth 不适用于 RabbitHandler。在消息传递方面,它仅适用于 Spring Integration 和 Spring Cloud Stream。