在kafka0.11.0.0的最新版本中,apache团队引入了幂等生产者和事务。有没有可能保证我们要记录的一整套消息(例如100万条)只在最后提交?我希望,例如,如果生产商失去了与经纪人的联系,无法重新稳定,消费者将看不到任何消息。有可能吗?
t5zmwmid1#
是的,这是可能的使用事务在您的生产者。启动事务,发布所有消息,然后提交事务。所有消息一次只写入一个kafka,但处于新的read\u committed模式的使用者只有在生产者提交事务并在kafka提交日志中添加特殊事务标记后才能看到消息。未处于read\u committed模式的使用者可以看到单独写入的消息,即使它们可能尚未(或曾经)提交。打开的事务可以保持未提交状态的时间是有限制的,因此最终如果生产者死亡并且没有显式结束事务,它将超时并回滚,并且读取已提交的消费者将永远看不到这些消息。
1条答案
按热度按时间t5zmwmid1#
是的,这是可能的使用事务在您的生产者。启动事务,发布所有消息,然后提交事务。所有消息一次只写入一个kafka,但处于新的read\u committed模式的使用者只有在生产者提交事务并在kafka提交日志中添加特殊事务标记后才能看到消息。
未处于read\u committed模式的使用者可以看到单独写入的消息,即使它们可能尚未(或曾经)提交。
打开的事务可以保持未提交状态的时间是有限制的,因此最终如果生产者死亡并且没有显式结束事务,它将超时并回滚,并且读取已提交的消费者将永远看不到这些消息。