我希望避免向Kafka主题发送重复的消息。实现它的理想方法是什么?使用java client for ApacheKafka,在调用kafkaproducer.send之前,是否需要验证消息是否存在我指的是这个医生
6vl6ewon1#
目前(Kafka) 0.10.1 ),Kafka是不可能做到一次到位的。不管你想做什么工作,总会有一个缺口,你最终可能会丢失消息或重复消息。但是,Kafka将添加一个幂等生产者(计划为 0.10.2 )这将允许您避免重复写入。的目标日期 0.10.2 发布于2017年开始。
0.10.1
0.10.2
pbpqsu0x2#
每次发送新邮件时,都要检查是否已发送相同的邮件是不实际的。换个Angular 考虑:您可以调用kafkaproducer.send方法,并通过回调通知您成功或失败。
70gysomp3#
这对Kafka来说几乎是不可能的。您需要使用一个不同的存储器来实现这一点,该存储器为随机访问提供适当的索引。根据您的需要,可以是(分布式)缓存、键值存储或其他任何形式。您可能希望在消费者方面而不是生产者方面这样做,因为不同的消费者可能会使用不同的重复数据消除策略(有些消费者可能只是容忍重复数据)。
3条答案
按热度按时间6vl6ewon1#
目前(Kafka)
0.10.1
),Kafka是不可能做到一次到位的。不管你想做什么工作,总会有一个缺口,你最终可能会丢失消息或重复消息。但是,Kafka将添加一个幂等生产者(计划为
0.10.2
)这将允许您避免重复写入。的目标日期0.10.2
发布于2017年开始。pbpqsu0x2#
每次发送新邮件时,都要检查是否已发送相同的邮件是不实际的。换个Angular 考虑:您可以调用kafkaproducer.send方法,并通过回调通知您成功或失败。
70gysomp3#
这对Kafka来说几乎是不可能的。您需要使用一个不同的存储器来实现这一点,该存储器为随机访问提供适当的索引。根据您的需要,可以是(分布式)缓存、键值存储或其他任何形式。
您可能希望在消费者方面而不是生产者方面这样做,因为不同的消费者可能会使用不同的重复数据消除策略(有些消费者可能只是容忍重复数据)。