问题描述
是否可以在SpringBoot上为每个kafka主题的消费者设置不同的投票率?我希望有一个主题以更长的时间间隔(例如5分钟)进行轮询。我希望使用它来重试来自kafka的消息失败。
示例实现将大有帮助。
解决方法
从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);
}
});
}
}