验证 Kafka 主题中是否存在消息

问题描述 投票:0回答:3

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

实现这一目标的理想方法是什么?

使用 Apache Kafka 的 Java 客户端,在调用 KafkaProducer.send

之前是否可以验证消息是否存在

我指的是这个doc

java apache-kafka kafka-producer-api
3个回答
2
投票

目前(Kafka

0.10.1
),没有办法对 Kafka 的写入提供一次性保证。无论您想采取什么解决方法,总会存在间隙,最终可能会丢失消息或重复消息。

但是,Kafka 将添加一个 幂等生产者(计划用于

0.10.2
),这将允许您避免重复写入。
0.10.2
的目标发布日期是 2017 年初


0
投票

您每次发送新消息时都检查是否已发送相同的消息是不切实际的。另一种方式思考:您可以调用 KafkaProducer.send 方法,并通过回调通知您成功或失败。


0
投票

这几乎超出了 Kafka 的范围。您需要使用不同的存储来实现这一点,该存储为随机访问提供适当的索引。 根据您的需求,这可以是(分布式)缓存、键值存储或其他。

您可能希望在消费者端而不是生产者端执行此操作,因为不同的消费者可能会使用不同的重复数据删除策略(并且某些消费者可能只是容忍重复)。

© www.soinside.com 2019 - 2024. All rights reserved.