【发布时间】:2020-11-17 02:39:59
【问题描述】:
我是卡夫卡的新手。我已经建立了我的环境来生产和消费记录。但是,我的目标是在将记录发送给目标消费者之前拦截记录并修改它们的值。 现在,为了确保环境设置良好以拦截记录,我正在编写一个简单的 ConsumerInterceptor,它将拦截记录并打印它们的值。 我的 configure() 方法应该实现什么来启用我的 consumerInterceptor?我应该添加/修改哪些其他配置以及在哪里?
public class SimpleConsumerInterceptors<K, V> implements ConsumerInterceptor<K, V>{
private String clientId;
public void configure(final Map<String, ?> configs) {
// What configurations required to enable my consumerInterceptor?
}
public ConsumerRecords<K, V> onConsume(ConsumerRecords<K, V> records) {
ConsumerRecords<K, V> interceptRecords = records;
for (TopicPartition partition : records.partitions()) {
String topic = partition.topic();
List<ConsumerRecord<K, V>> recordsInPartition = records.records(partition);
for (ConsumerRecord<K, V> record : recordsInPartition) {
System.out.println("onConsume:");
System.out.println(record.value());
}
}
return interceptRecords;
}
public void onCommit(Map<TopicPartition, OffsetAndMetadata> offsets) {
System.out.println("onCommit")
}
@Override
public void close() {
System.out.println("close")
this.close();
}
}
【问题讨论】: