Spring Boot 3.1.3 中没有 jms 跟踪 id

问题描述 投票:0回答:1

我有两个类似的项目。一个带有 spring boot 2.7 和 sleuth,另一个带有 spring boot 3.1.3 和 micrometer。代码库几乎相同,这只是一个 POC,显示 Micrometer 仍然没有使用

JmsTemplate
@JmsListener
将 Traceid 添加到 jms 消息中。

工作最小示例位于此处:https://github.com/mbadziong/micrometer-broken-tracing

发送者和接收者类:

@Component
public class Receiver {

    private static Logger logger = LoggerFactory.getLogger(Receiver.class);

    @JmsListener(destination = "test-queue")
//    @Observed
    public void receive(String s) {
        logger.info("received message: {}", s);
    }
}
@RestController
public class Sender {
    private static Logger logger = LoggerFactory.getLogger(Sender.class);

    @Autowired
    JmsTemplate jmsTemplate;

    @GetMapping
    @ResponseStatus(HttpStatus.ACCEPTED)
    public void send() {
        logger.info("sending message...");
        jmsTemplate.convertAndSend("test-queue", "hello");
    }
}

在带有 sleuth 的版本中,接收器使用 traceId 和 spanId 记录到控制台。在带有千分尺的版本中缺少痕迹。

我是否缺少一些额外的配置才能使其正常工作?

spring-boot spring-jms micrometer spring-micrometer micrometer-tracing
1个回答
0
投票

目前 Micrometer 似乎不支持 JMS。有一个 PR 将 JMS 仪器添加到千分尺 (https://github.com/spring-projects/spring-framework/issues/30335) 以及一个将此功能添加到 Spring JmsTemplate 的 PR (https:// /github.com/spring-projects/spring-framework/issues/30335)。对于 micrometer,这似乎包含在 1.12.0 版本中。对于 Spring,它将是 Spring 6.1。

您可以查看两者的里程碑/快照版本,并检查它们是否提供您需要的功能。或者,您可以构建自己的机制来读取和写入相应的 JMS 标头。

© www.soinside.com 2019 - 2024. All rights reserved.