Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用@KafkaListener勇敢地追踪卡夫卡消费者_Java_Spring_Apache Kafka_Spring Kafka_Zipkin - Fatal编程技术网

Java 使用@KafkaListener勇敢地追踪卡夫卡消费者

Java 使用@KafkaListener勇敢地追踪卡夫卡消费者,java,spring,apache-kafka,spring-kafka,zipkin,Java,Spring,Apache Kafka,Spring Kafka,Zipkin,我正在使用Brave library进行跟踪,现在我也希望将其用于卡夫卡消费者。我希望避免添加Spring Sleuth和利用勇敢的卡夫卡工具 对于卡夫卡消费者,我使用@KafkaListener。代码如下所示: TestKafkaEndpoint.java @服务 公共类TestKafkaEndpoint{ @KafkaListener(topics=“myTestTopic”,containerFactory=“testKafkaListenerContainerFactory”) publ

我正在使用Brave library进行跟踪,现在我也希望将其用于卡夫卡消费者。我希望避免添加Spring Sleuth和利用勇敢的卡夫卡工具

对于卡夫卡消费者,我使用@KafkaListener。代码如下所示:

TestKafkaEndpoint.java

@服务
公共类TestKafkaEndpoint{
@KafkaListener(topics=“myTestTopic”,containerFactory=“testKafkaListenerContainerFactory”)
public void procesMyRequest(@Payload final MyRequest){
//做一些魔术。。。
}
}
和配置类testkafkanconfig.java


@配置
@使能卡夫卡
@组件扫描
公共类TestKafkanconfig{
@豆子
公共ConsumerFactory testConsumerFactory(){
最终映射consumerProperties=new HashMap();
consumerProperties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG,“kafka01 localhost:9092”);
consumerProperties.put(ConsumerConfig.KEY\u反序列化程序\u类\u配置,StringDeserializer.CLASS);
consumerProperties.put(ConsumerConfig.VALUE\u反序列化程序\u类\u配置,JsonDeserializer.CLASS);
consumerProperties.put(ConsumerConfig.GROUP_ID_CONFIG,“TestGROUP”);
返回新的DefaultKafkanConsumerFactory(consumerProperties,新的StringDeserializer(),新的JsonDeserializer(MyRequest.class));
}
@豆子
公共KafkaListenerContainerFactory测试KafkaListenerContainerFactory(){
最终ConcurrentKafkListenerContainerFactory=新ConcurrentKafkListenerContainerFactory();
setConsumerFactory(testConsumerFactory());
factory.getContainerProperties().setErrorHandler(新的LoggingErrorHandler());
返回工厂;
}

但我不知道在使用卡夫卡工厂时如何使用卡夫卡消费者,或者如何利用卡夫卡消费工具。有没有人有这方面的经验并使其正常工作?

我不熟悉它,但它看起来像是一个简单的消费者包装器:

您应该能够创建
DefaultKafkaConsumerFactory
的子类;重写侦听器容器使用的
createConsumer
方法

this.consumer=
KafkaMessageListenerContainer.this.consumerFactory.createConsumer(
此为.consumerGroupId,
this.containerProperties.getClientId(),
KafkaMessageListenerContainer.this.clientdSuffix,
消费者财产);
…调用super.createConsumer(…)并将其包装在一个
TracingConsumer

如果您使用的是2.5.3或更高版本,则可以向DKCF添加
ConsumerPostProcessor

侦探就是这样做的:


你好,Gary,谢谢你的精彩评论。我已经开始研究DefaultKafkanconSumerFactory的子类化,这可能是一个不错的选择。我还将研究ConsumerPostProcessor,它听起来更简洁一些,并将我的经验、最终解决方案发布到此处:)DefaultKafkanconSumerFactory的子类帮助了。T汉克:)