You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus集成OpenTracing实现Kafka消息透传时traceId不一致问题

问题解决方案

出现traceId不匹配是手动配置的Kafka链路拦截器与Quarkus内置的Reactive Messaging链路处理逻辑冲突导致,按以下步骤调整即可:

  • 第一步:移除生产者、消费者配置中手动添加的TracingProducerInterceptor、TracingConsumerInterceptor配置项,Quarkus smallrye-opentracing扩展已经内置了Reactive Messaging场景下的链路上下文注入能力,额外添加的客户端拦截器会导致上下文处理冲突。
  • 第二步:删除消费者process方法上的@Traced注解,该注解默认会为方法调用创建全新链路,直接覆盖了从Kafka消息头中提取的原有链路上下文。
  • 第三步:在生产者和消费者的配置文件中新增开启Reactive Messaging链路追踪的开关:
quarkus.opentracing.mp.messaging.enabled=true
  • 第四步:补全Kafka消息序列化/反序列化配置,在生产者配置中添加:
mp.messaging.outgoing.people.value.serializer=com.example.PersonSerializer

在消费者配置中添加:

mp.messaging.incoming.people.value.deserializer=com.example.PersonDeserializer

调整完成后重启两个服务,再次调用生产者接口即可看到消费者日志打印的traceId与生产者完全一致,仅spanId为消费链路生成的子span ID,满足全链路日志查询的需求。

内容的提问来源于stack exchange,提问作者Mihai P.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 20:45:07