我有一个名为SEND_NOTIFICATION的Kafka主题,用于发送通知服务使用的通知。但问题是,在侦听器使用主题后,我在此模块中的任何函数中使用调试模式,然后再次使用主题,并一次又一次地发送通知。有没有办法限制它再次被消费?
sqougxex1#
props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, true);
我认为消费者配置中的这个属性会有所帮助。
n6lpvg4x2#
简短的回答是,不,不容易。Kafka在消费后持久化数据。它与AWS SNS或RabbitMQ等其他解决方案不同,这些解决方案在消费后删除数据。如果您将group.id设置为某个一致的值,和设置enable.auto.commit=false配置,和在阅读数据后在您的消费者中调用commitSync(),您将在下一次运行时从下一个可用**偏移恢复数据。但是,这意味着,在调试时,您可能会跳过偏移量,而不是处理预期的数据。但是,一旦group.id被设置为其他值,或者您运行kafka-consumer-groups --reset-offsets,您将再次读取数据,因为它仍然存在于代理中。
group.id
enable.auto.commit=false
commitSync()
kafka-consumer-groups --reset-offsets
2条答案
按热度按时间sqougxex1#
我认为消费者配置中的这个属性会有所帮助。
n6lpvg4x2#
简短的回答是,不,不容易。
Kafka在消费后持久化数据。它与AWS SNS或RabbitMQ等其他解决方案不同,这些解决方案在消费后删除数据。
如果您将
group.id
设置为某个一致的值,和设置enable.auto.commit=false
配置,和在阅读数据后在您的消费者中调用commitSync()
,您将在下一次运行时从下一个可用**偏移恢复数据。但是,这意味着,在调试时,您可能会跳过偏移量,而不是处理预期的数据。
但是,一旦
group.id
被设置为其他值,或者您运行kafka-consumer-groups --reset-offsets
,您将再次读取数据,因为它仍然存在于代理中。