记录@SqsListener时缺少TraceId

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

在我的 Spring Boot 项目中,TraceId 仅在 @SqsListener 注解的方法中丢失。 我已使用

spring-cloud-starter-sleuth
进行日志记录和 logback 配置。

spring-boot amazon-sqs spring-cloud-sleuth spring-logback
2个回答
0
投票

您使用的是哪个 sleuth 版本?自 3.0 版本以来,他们删除了 SQS 支持。 https://github.com/spring-cloud/spring-cloud-sleuth/issues/1876

此存储库有助于实现将跟踪放入 SQS 消息中,但从消息中获取它们并注入到 MDC 中需要您自己实现。


0
投票

嘿,即使它不适用于 1.2.5 版本的 sleuth

所以我做了一些更改 - 这些是跟踪器和跨度 ID 的手动更改

@SqsListener(value = "test", deletionPolicy = SqsMessageDeletionPolicy.ON_SUCCESS)
public void process(final String message) {

String traceId = MDC.get("traceId");
Span span = tracer.createSpan(traceId);
LOGGER.info("Request for : " + message);
try {
    // System user and your working stuff
    tracer.close();
    return;
} catch (Exception e) {
    ThreadLocalUtil.resetRequestInitiator();
    LOGGER.error("Exception in message", e);
}

throw new ErrorProcessSQS("Exception in message");

}

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