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)
并希望 traceid
和 spanid
与兔子消息一起发送并填充在 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。
我们想将 spring sleuth 与 spring-amqp (rabbitmq) 一起使用。 所以我们通过
在发布者网站上发送消息amqpTemplate.convertAndSend("exchange", "key", myEvent)
并希望 traceid
和 spanid
与兔子消息一起发送并填充在 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。