如何创建自定义的卡夫卡消费者拦截器来一次拦截一条记录?

时间:2019-06-11 17:23:32

标签: apache-kafka kafka-consumer-api

我正在尝试使用org.apache.kafka.clients.consumer.ConsumerInterceptor添加自定义的消费者拦截器。

我在这里遇到的问题是onConsume()方法正在获取ConsumerRecords<String, Object>条记录,但是我想一次只截取一个记录而不是一堆记录。

我该怎么做?请建议

3 个答案:

答案 0 :(得分:0)

我能够通过从'spring-kafka-2.7.7-RELEASE'实现'RecordInterceptor'接口来实现,而无需更改kafka上的任何设置。

这个新界面是上周添加的。如果您有兴趣,可以在这里查看详细信息。

https://github.com/spring-projects/spring-kafka/issues/1118

答案 1 :(得分:0)

根据ConsumerInterceptor接口的实现,记录将成批进入onConsume()方法中。您可以迭代此记录并执行所需的业务操作。

答案 2 :(得分:0)

如果你使用 Spring:
您可以使用 <%= %> 与方法 org.springframework.kafka.listener.RecordInterceptor 这将通过一次拦截一条记录来工作。 然后,如果您要在发送后更改记录,您可以使用 `org.apache.kafka.clients.producer.ProducerInterceptor。