【问题标题】:Set polling rate for kafka consumers per topic using springboot使用 Spring Boot 为每个主题的 kafka 消费者设置轮询率
【发布时间】:2020-08-24 22:12:07
【问题描述】:

是否可以在 SpringBoot 上为每个 kafka 主题的消费者设置不同的投票率?我希望有一个主题以更长的间隔(如 5 分钟)进行轮询。我希望用它来实现重试处理来自kafka的消息失败。

一个示例实现会有很大帮助。

【问题讨论】:

  • @Arun 感谢您的回复。但是我想更改轮询之间的间隔,而不是更改为消费者的每次轮询检索到的消息数量,我更新了我的问题以使其更清晰。
  • 你可以做到,为每个主题创建不同的消费者@itabangay
  • @deadpool 你能告诉我一个关于如何做到这一点的示例实现吗?

标签: spring-boot spring-kafka


【解决方案1】:

从 2.3 版开始,监听器容器有了一个新属性 idleBetweenPolls。容器将确保轮询之间的时间不大于max.poll.interval.ms - 5000

您可以使用容器定制器 bean 为特定消费者设置它...

@Component
class Customizer {

    public Customizer(ConcurrentKafkaListenerContainerFactory<?, ?> factory, DefaultKafkaProducerFactory<?, ?> pf) {
        factory.setContainerCustomizer(container -> {
            if (container.getContainerProperties().getGroupId().equals("slowGroup")) {
                // or you can use the topic(s)
                container.getContainerProperties().setIdleBetweenPolls(60_000);
            }
        });
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 2019-01-10
    相关资源
    最近更新 更多