【问题标题】:Making Kafka ConcurrentMessageListenerContainer Work as a Batch使 Kafka ConcurrentMessageListenerContainer 作为一个批处理工作
【发布时间】:2021-02-13 05:33:00
【问题描述】:

在我的应用程序中,我创建了自己的自定义侦听器,以便不使用 @KafkaListener 注释。我配置为侦听记录中的消息以记录基础。那是有效的。现在我想将我的自定义监听器转换为批量监听消息。我是否应该将 ConsumerConfig.MAX_POLL_RECORDS_CONFIG 配置为每次轮询要处理的消息量?我还将我的 AckMode 更改为 BATCH。这就是我需要做的一切吗?

我知道 ConcurrentKafkaListenerContainerFactory 具有属性“setBatchListener(true)”,但据我了解 Kafka 文档,这种类型的工厂配置仅与 @KafkaListener 注释一起使用。

任何帮助将不胜感激。

【问题讨论】:

  • 最大轮询记录是一个限制,而不是硬数字;您可能仍需要增加轮询超时时间

标签: java apache-kafka kafka-consumer-api spring-kafka


【解决方案1】:

只需更改您的侦听器以实现BatchMessageListener 或其子接口之一。容器会自动检测其类型。

Message Listeners

@KafkaListener 代码使用工厂标志来确定要创建哪种类型的侦听器适配器。

【讨论】:

  • 完美。谢谢@GaryRussell,这就是我正在做的。除了 ConsumerConfig.MAX_POLL_RECORDS_CONFIG 之外,还有其他方法可以设置轮询大小吗?
  • 这是一个 MAX;您将获得最多该数量的记录;没有MIN_POLL_RECORDS_CONFIG - 您只能使用fetch.min.bytesfetch.max.wait.ms 来近似控制最小值。
猜你喜欢
  • 2021-05-24
  • 2017-08-11
  • 1970-01-01
  • 2021-07-02
  • 1970-01-01
  • 2018-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多