在生成或使用数据时我没有看到任何失败,但是生产中存在大量重复消息.对于获得大约100k消息的小主题,有大约4k重复,虽然我说没有失败,并且最重要的是没有实现重试逻辑或设置配置值.
我还检查了那些重复消息的偏移值,每个消息都有不同的值,告诉我问题出在生产者身上.
任何帮助将受到高度赞赏
阅读更多关于kafka中的消息传递:
https://kafka.apache.org/08/design.html#semantics
因此,有效地Kafka保证默认情况下至少一次交付,并且允许用户通过禁用生产者的重试并在处理一批消息之前提交其偏移量来最多实施一次交付.完全一次交付需要与目标存储系统合作,但Kafka提供了偏移,这使得实现这一直接.
可能你正在寻找像jms一样的"一次交付"
https://cwiki.apache.org/confluence/display/KAFKA/FAQ#FAQ-HowdoIgetexactly-oncemessagingfromKafka?
有两种方法可以准确地获取数据一旦生产过程中的语义:1.使用每个分区每次你得到一个网络错误在该分区中检查的最后一个消息,看看你的最后写入成功,一次一个作家和2包含一个主键消息中的(UUID或其他内容)和消费者的重复数据删除.
我们在系统中实施了第二点.