Spring boot 更改要在Spring Kafka中获取的记录数
我有一个spring引导服务,它有一个kafka消费者。我正在使用Spring boot 更改要在Spring Kafka中获取的记录数,spring-boot,apache-kafka,spring-kafka,Spring Boot,Apache Kafka,Spring Kafka,我有一个spring引导服务,它有一个kafka消费者。我正在使用springkafka创建消费者 从文档中可以看出,max.poll.records属性将有助于限制要获取的记录数 但我的问题是,我想根据其他几个条件更改max.poll.records的值 我们如何使用弹簧卡夫卡来实现这一点?任何帮助都将不胜感激。如果您的意思是在运行时更改它,则无法完成;创建使用者时,属性将发送给Kafka 要更改它,您必须停止容器,更改属性,然后重新启动容器。您需要一个自定义的消费者工厂,它将DefaultK
springkafka
创建消费者
从文档中可以看出,max.poll.records
属性将有助于限制要获取的记录数
但我的问题是,我想根据其他几个条件更改max.poll.records
的值
我们如何使用弹簧卡夫卡来实现这一点?任何帮助都将不胜感激。如果您的意思是在运行时更改它,则无法完成;创建使用者时,属性将发送给Kafka 要更改它,您必须停止容器,更改属性,然后重新启动容器。您需要一个自定义的消费者工厂,它将
DefaultKafkaConsumerFactory
子类化并重写
protected KafkaConsumer<K, V> createKafkaConsumer(Map<String, Object> configs) {
受保护的卡夫卡消费者创建卡夫卡消费者(地图配置){
在运行时更改属性。如果您的意思是在运行时更改属性,则无法执行此操作;在创建使用者时,属性将发送给Kafka 要更改它,您必须停止容器,更改属性,然后重新启动容器。您需要一个自定义消费者工厂,该工厂将
defaultkafkanconsumerfactory
子类化并重写
protected KafkaConsumer<K, V> createKafkaConsumer(Map<String, Object> configs) {
受保护的卡夫卡消费者创建卡夫卡消费者(地图配置){
在运行时更改属性。感谢@Gary的输入。是的,我只想获取主题中的消息数。
n
考虑到我们的负载,停止容器可能需要时间。在这种情况下,您需要自己创建使用者,而不是使用侦听器容器。谢谢!!您的意思是,覆盖create吗eKafkaConsumer
并动态更新fetcher.maxPollRecords
?不;我没有;您不能更改fetcher
;字段是final
(与fetcher
本身一样)。您需要为每个不同的获取大小创建一个新的使用者。感谢@Gary的输入。感谢@Gary的输入。是的,我只想从主题中获取n
消息数。考虑到我们的负载,停止容器可能需要时间。在这种情况下,您需要自己创建使用者,而不是使用listener容器。谢谢!!你的意思是,重写CreateKafkanConsumer
并动态更新获取程序。maxPollRecords
?不;我没有;你不能更改获取程序
;字段是最终的
(与获取程序本身一样)。您需要为每个不同的获取大小创建一个新的使用者。感谢@Gary的输入。