验证Kafka主题

时间:2016-12-07 11:52:30

标签: java apache-kafka kafka-producer-api

我希望避免向Kafka主题发送重复的消息。

实现它的理想方法是什么?

在Apache Kafka上使用Java客户端,无论如何都要在调用 KafkaProducer.send

之前验证是否存在消息

我指的是doc

3 个答案:

答案 0 :(得分:1)

目前(Kafka 0.10.1),无法与Kafka一起完成一次交付。无论你想做什么工作,都会有差距,你最终可能会丢失消息或重复。

但是,Kafka将添加idempotent producer(计划用于0.10.2),以避免重复写入。 0.10.2发布的目标日期为beginning 2017

答案 1 :(得分:0)

每次发送新邮件时,检查是否传递了相同的邮件是不切实际的。从另一个角度考虑:您可以通过回调来调用KafkaProducer.send方法,通知您成功或失败。

答案 2 :(得分:0)

这几乎超出了卡夫卡的范围。您需要使用为随机访问提供正确索引的其他存储来实现此目的。 根据您的需要,可以是(分布式)缓存,键值存储或其他任何内容。

您可能希望在消费者方面而不是生产方那样做,因为不同的消费者可能会使用不同的重复数据删除策略(而且有些消费者可能只是容忍重复)。