ale*_*oid 3 apache-kafka spring-kafka
我使用 Kafka 消息代理和 Spring Kafka。
我使用默认的自动确认模型。有时我@KafkaListener需要大约 5 分钟才能完成工作。
我注意到,当这种情况发生时,卡夫卡会产生重复的消息。是否可以配置任何超时属性,以防止 Kafka 重复相同的消息并让 Producer 等待(至少例如 10 分钟),而 Consumer 将完成工作?
生产者和消费者是解耦的——没有办法阻止生产者发送更多消息,因为消费者速度很慢。
我没有明确使用 auto.commit 。我使用默认的 Spring 配置
auto.commit默认情况true下(在 Kafka 客户端中),因此 spring 下的默认行为是客户端自己进行提交,而不是容器。将其设置为false并将容器属性设置AckMode为RECORD,以便在侦听器退出后执行提交。
有一个kafka消费者属性 max.poll.interval.ms,默认为5分钟(300000)。
使用消费者组管理时,调用 poll() 之间的最大延迟。这对消费者在获取更多记录之前可以空闲的时间设置了上限。如果在此超时到期之前未调用 poll(),则消费者将被视为失败,并且组将重新平衡,以便将分区重新分配给另一个成员。
重新平衡将导致重新交付。您可以增加该属性以避免重新平衡。
正如我所说,日志通常会有所帮助;您应该在日志中看到重新平衡发生。
| 归档时间: |
|
| 查看次数: |
9087 次 |
| 最近记录: |