Spring cloud 为什么不是';卡夫卡生产商Sterner记录跟踪id和跨度id?

Spring cloud 为什么不是';卡夫卡生产商Sterner记录跟踪id和跨度id?,spring-cloud,spring-cloud-sleuth,Spring Cloud,Spring Cloud Sleuth,我有一个Kafka实例和一个简单的spring引导应用程序,其中有一个REST控制器和一个ProducerListenerbean。控制器接受一个简单的字符串消息,并通过KafkaTemplate将其发送给Kafka。我想让ProducerListener记录一条信息消息,但缺少跟踪id和span id。在我看来,它应该包括在日志中 我使用SpringCloud侦探和SpringKafka启动器 消息本身通过Kafka主题成功地发送到另一个正确获取跟踪id的spring引导应用程序,因此我假设问

我有一个Kafka实例和一个简单的spring引导应用程序,其中有一个REST控制器和一个
ProducerListener
bean。控制器接受一个简单的
字符串
消息,并通过
KafkaTemplate
将其发送给Kafka。我想让
ProducerListener
记录一条信息消息,但缺少跟踪id和span id。在我看来,它应该包括在日志中

我使用SpringCloud侦探和SpringKafka启动器

消息本身通过Kafka主题成功地发送到另一个正确获取跟踪id的spring引导应用程序,因此我假设问题只与
ProducerListener
有关

调试 我尝试过调试代码,结果使用了方法
TracingProducer.send(..)
。那里的span实例是
NoopSpan
(这很奇怪),因为
TracingCallback
没有包装
回调
,跟踪信息丢失。有一些讨厌的比特操作我不明白。jar就是这个
brave-instrumentation-kafka-clients-5.7.0.jar

代码 控制器

@PostMapping("/pass-to-kafka")
public void passToKafka(@RequestBody String message) {
   logger.info("This log message has trace id and span id");
   kafkaTemplate.send("my-test-topic", message);
}
监听者

@Bean
public ProducerListener myProducerListener() {
    return new ProducerListener<>() {
        @Override
        public void onSuccess(ProducerRecord producerRecord, RecordMetadata recordMetadata) { 
            logger.info("This log message is missing trace id and span id");
        }
    };
}

请按照文档和自述文件中的说明设置
spring.sleuth.probability=1.0
。然后您将打开跟踪功能。

请按照文档和自述文件中的说明设置
spring.sleuth.probability=1.0
。然后您将打开跟踪

INFO [bar,208706b5c40f8e93,208706b5c40f8e93,false] com.example.demo.Controller: This log message has trace id and span id
.
.
.
INFO [bar,,,] com.example.demo.DemoApplication: This log message is missing trace id and span id