reactor-kafka无traceId

概览

springboot 2.6.7

reactor-kakfa 1.3.11

spring-cloud-starter-sleuth 3.1.2

解决

不止为何日志没有traceId

按照sleuth的文档,说这么写就行,实际没生效,不知道是否版本问题

java 复制代码
@Bean("kafkaReceiver")
    public KafkaReceiver<String, String> kafkaReceiver(TracingKafkaConsumerFactory tracingKafkaConsumerFactory) {
        return KafkaReceiver.create(tracingKafkaConsumerFactory, options);
    }

最后在处理消息处,单独添加以下代码

java 复制代码
@PostConstruct
    public void handleMessage() {
        kafkaReceiver.receive()
                .flatMap(receiverRecord -> {
                    Span.Builder builder = propagator.extract(receiverRecord, extractor);
                    Span childSpan = builder.name("on-message").start();
                    SpanAndScope spanAndScope = new SpanAndScope(childSpan, tracer.withSpan(childSpan));

                    
                    return dohanle(receiverRecord)
                            .flatMap(valueResult -> {
                                receiverRecord.receiverOffset().acknowledge();
                                return Mono.just(receiverRecord);
                            })
                            .doFinally(signalType -> {
                                spanAndScope.close();
                            });
                })
                .subscribe();
    }

结果

traceId有了,kafka共用一个

spanId为每条消息单独,并且会向下传播

相关推荐
A.说学逗唱的Coke5 小时前
【大模型专题】别再用 HTTP 直连 Agent 了:用 Kafka 承载 A2A 协议,从 PoC 走到生产
人工智能·kafka·a2a
拼图2096 小时前
Git常用语法
分布式·git·学习
用户5313973181713 小时前
[Kafka源码揭秘] 消息写入全链路:网络IO与请求入队
kafka·消息队列
swordbob15 小时前
一个 Partition就是一个年级,一个消费者组占用1年级1班,另一个消费者组占用1年级2班,座位号(offset)可以相同,但班级号不同?
kafka
香吧香17 小时前
Kafka 三节点集群:只订阅一个 broker 会丢消息吗?能用 VIP订阅 吗?
kafka
盟道科技17 小时前
小程序订阅消息大规模投递实践:频控令牌池、Redis限流与失败补偿设计
分布式·算法·小程序
雾隐隐o18 小时前
Kafka 生产者消息丢失:ACK、重试与可靠发送
kafka
卷毛的技术笔记18 小时前
RocketMQ事务消息:我把分布式事务这层窗户纸捅破了
java·分布式·后端·java-rocketmq
heimeiyingwang19 小时前
【中台·技术篇】消息队列中台:Kafka/RocketMQ 统一管理与多租户隔离
kafka·rocketmq·中台
程序员天天困2 天前
Kafka 接入 AI 的三条路线:MCP 提案、会话记忆与实时上下文
大数据·后端·kafka