我在使用consumer.poll()方法时遇到问题。使用poll()方法获取数据之后,消费者不会提交任何数据,所以请帮我从kafka中删除特定行数话题。
答案 0 :(得分:0)
在提交数据之前,您需要确保数据已完全处理,以避免在消费者失败的情况下“数据丢失”。
因此,如果您启用auto.commit
,请确保在发出下一个poll()
之后在poll()
之后完全处理所有数据,因为每个poll()
都会隐式提交所有数据来自之前的poll()
。
如果无法做到这一点,您应该禁用auto.commit
并在通过consumer.commit(...)
完全处理数据后手动提交。为此,请记住,您不需要单独提交每条消息,并且具有偏移X
的提交会隐式提交具有偏移< X
的所有消息(例如,在处理偏移5的消息之后,您commit offset 6 - 提交的偏移量不是最后成功处理的消息,而是您要处理的下一条消息)。并且提交偏移量6,提交偏移量为0到5的所有消息。因此,在完全处理所有具有较小偏移量的消息之前,不应提交偏移量6。