Apache kafka 卡夫卡如何保证消费者不会';我一条信息都看不两遍吗?
卡夫卡如何保证消费者不会将一条信息读两遍 或者上述情况是否可能?Apache kafka 卡夫卡如何保证消费者不会';我一条信息都看不两遍吗?,apache-kafka,Apache Kafka,卡夫卡如何保证消费者不会将一条信息读两遍 或者上述情况是否可能? 同一条信息能被一个或多个消费者阅读两次吗?准确地说,卡夫卡保证: Kafka提供分区中消息的顺序保证 生成的消息在写入分区的所有同步副本时被视为“已提交” 只要至少有一个副本保持活动状态,提交的消息就不会丢失 使用者只能读取已提交的邮件 关于消费消息,消费者通过保存内部压缩的Kafka主题中读取的最后一个偏移量来跟踪分区中的进度 如果启用了enable.auto.commit,卡夫卡消费者可以自动提交偏移量。然而,这将给出“最多一
同一条信息能被一个或多个消费者阅读两次吗?准确地说,卡夫卡保证:
如果启用了
enable.auto.commit
,卡夫卡消费者可以自动提交偏移量。然而,这将给出“最多一次”的语义。因此,通常会禁用该标志,并且开发人员在处理完成后显式提交偏移量。如果不使消费进程幂等,则绝对可能
比如,;您正在实现至少一个传递语义,首先处理消息,然后提交偏移量。由于服务器故障或重新平衡,可能无法提交偏移量。(可能您的消费者当时已被吊销)因此,当您进行投票时,您将收到两次相同的消息。有许多情况会导致消费者使用重复的消息
- read_committed:使用者将始终仅读取提交的数据
- read_uncommitted:按偏移顺序读取所有邮件,无需等待 对于要提交的事务
请更详细地参考我想你的意思是:“在服务器故障或重新平衡的情况下,这是绝对可能的。如果你不让你的消费过程幂等,你可能会遇到麻烦”@J.J.Beam我看不出区别:)你应该让你的消费过程幂等,以避免重复。这就是我所说的。我想只有当生产者端的“acks=all”时,第二个才是正确的。但消费者仍然可以消费两次?