在我的 Spring Boot 项目中,TraceId 仅在 @SqsListener 注解的方法中丢失。 我已使用
spring-cloud-starter-sleuth
进行日志记录和 logback 配置。
您使用的是哪个 sleuth 版本?自 3.0 版本以来,他们删除了 SQS 支持。 https://github.com/spring-cloud/spring-cloud-sleuth/issues/1876。
此存储库有助于实现将跟踪放入 SQS 消息中,但从消息中获取它们并注入到 MDC 中需要您自己实现。
嘿,即使它不适用于 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");
}