我正在尝试使用 Sleuth 和 ActiveMQ 配置微服务。 开始请求时,我可以在生产者的日志中正确看到 appName、traceId 和 spanId,但在侦听器中将消息出列后,我只找到了 appName,没有 traceId 和 spanId。 如何填写此字段?
现在我正在使用 spring.sleuth.messaging.jms.enabled=false 以避免在启动时出现此异常:
我的依赖:
org.springframework.boot.spring-boot-starter-activemq 2.5.1
org.springframework.cloud.spring-cloud-sleuth 3.0.3
谢谢大家!
答案 0 :(得分:0)
我的理解是,您要查找的属性是在发送消息时在 JMS 消息上设置的,然后在使用消息时从消息中检索。由于您设置了 spring.sleuth.messaging.jms.enabled=false
,因此您禁用了此功能。请参阅 the documentation,其中说明:
我们检测 JmsTemplate
以便将跟踪标头注入到消息中。我们还支持使用方的 @JmsListener
注释方法。
要阻止此功能,请将 spring.sleuth.messaging.jms.enabled
设置为 false
。
如果您想将 Sleuth 与 Spring JMS 一起使用,您需要找到连接工厂问题的替代解决方案。如果您在某处注入 org.apache.activemq.ActiveMQConnectionFactory
,那么您几乎肯定应该使用 javax.jms.ConnectionFactory
。使用具体类型不利于可移植性和像这样动态使用包装器实现的用例。