Java 使用@KafkaListener勇敢地追踪卡夫卡消费者
我正在使用Brave library进行跟踪,现在我也希望将其用于卡夫卡消费者。我希望避免添加Spring Sleuth和利用勇敢的卡夫卡工具 对于卡夫卡消费者,我使用@KafkaListener。代码如下所示: TestKafkaEndpoint.javaJava 使用@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
@服务
公共类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汉克:)