【问题标题】:Spring kafka listener :Trying to print RECORD_METADATA as part of kafka listenerSpring kafka listener:尝试打印 RECORD_METADATA 作为 kafka listener 的一部分
【发布时间】:2021-10-19 05:42:41
【问题描述】:

我正在尝试在我的 spring kafka 监听器中访问各种 KafkaHeaders 属性:

这是我获取 KafkaListenerContainerFactory 的代码 :

public KafkaListenerContainerFactory<ConcurrentMessageListener<String,GenericRecord>> kafkaListenerContainerFactory(final KafkaProperties kafkaProperties){

final ConcurrentKafkaListenerContainerFactory<String,GenericRecord> factory=new ConcurrentKafkaListenerContainerFactory<>();
factory.setBatchErrorHandler(new BatchLoggingErrorHandler());
factory.setBatchListener(true);
return factory;



}

我的监听代码:

@KafkaListener(topic="testTopic",groupId="testGroupId"){

public void consumeNotification(@Payload Request request, @Header(KafkaHeaders.RECORD_METADATA) RecordMetadata recordMetaData){

}



But I am getting exception in my Listener:

Missing header 'kafka_recordMetadata'  for method parameterType[class org.apache.kafka.clients.producer.RecordMetadata]

对于所有标头属性,我都收到此错误...与生产者有关吗?

KafkaHeaders 中的所有属性都给我带来了问题。一切都在抛出 MissingHeader 错误。

【问题讨论】:

  • 如果不使用批处理监听选项,它是如何工作的?
  • @Artem Bilan,我也试过了..将错误处理程序设置为 seektoerrorHandler。并且批处理侦听器为假..然后也是同样的错误。

标签: java spring apache-kafka spring-kafka


【解决方案1】:

有关支持的标头,请参阅文档:https://docs.spring.io/spring-kafka/docs/current/reference/html/#consumer-record-metadata

KafkaHeaders.RECORD_METADATA 从未出现过。更多 RecordMetadata 是一个生产侧对象:org.apache.kafka.clients.producer.RecordMetadata

因此,目前尚不清楚是什么驱使您执行代码中的任何操作...

【讨论】:

  • 类型错误 - 从 Artem 的链接向下滚动。 &gt;Starting with version 2.5, instead of using discrete headers, you can receive record metadata in a ConsumerRecordMetadata parameter. 使用@KafkaListener(...) public void listen(String str, ConsumerRecordMetadata meta) { ... }@Header(KafkaHeaders.RECORD_METADATA) ConsumerRecordMetadata meta
猜你喜欢
  • 2018-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 2020-04-24
  • 1970-01-01
  • 1970-01-01
  • 2017-02-15
相关资源
最近更新 更多