Sleuth traceId 和 spanId 未登录到 activeMQ 侦听器

Sleuth traceId and spanId not logged in activeMQ Listener

我正在尝试使用 Sleuth 和 ActiveMQ 配置微服务。 启动请求时,我可以在生产者的日志中正确看到 appName、traceId 和 spanId,但是在将消息从侦听器中取出后,我只找到 appName,没有 traceId 和 spanId。 我怎样才能填写这些字段?

现在我正在使用 spring.sleuth.messaging.jms.enabled=false 以避免在启动时出现此异常:

我的依赖项:

谢谢大家!

我的理解是,您要查找的属性是在发送消息时在 JMS 消息 上设置的,然后在使用消息时从消息中检索。由于您正在设置 spring.sleuth.messaging.jms.enabled=false,因此您正在禁用此功能。请参阅 the documentation 其中指出:

We instrument the JmsTemplate so that tracing headers get injected into the message. We also support @JmsListener annotated methods on the consumer side.

To block this feature, set spring.sleuth.messaging.jms.enabled to false.

如果您想将 Sleuth 与 Spring JMS 一起使用,则需要找到连接工厂问题的替代解决方案。如果你在某处注入 org.apache.activemq.ActiveMQConnectionFactory 那么你几乎肯定应该使用 javax.jms.ConnectionFactory 来代替。使用具体类型不利于可移植性和像这样动态使用包装器实现的用例。