我正在尝试使用 Apache Pulsar 的重复数据删除功能。
brokerDeduplicationEnabled=true
在standalone.conf 文件中设置,但是
当我多次从生产者发送相同的消息时,我在消费者端收到所有消息,这是预期的行为吗?
重复数据删除不是像 AWS SQS 中那样意味着基于内容的重复数据删除
吗?
这是我的制作人代码供引用。
import pulsar
import json
client = pulsar.Client('pulsar://localhost:6650')
producer = client.create_producer(
'persistent://public/default/my-topic',
send_timeout_millis=0,
producer_name="producer-1")
data = {'key1': 0, 'key2' : 1}
for i in range(10):
encoded_data = json.dumps(data).encode('utf-8')
producer.send(encoded_data)
client.close()
最佳答案
在 Pulsar 中,重复数据删除对消息内容不起作用。它适用于个人消息。目的不是删除重复内容,而是确保单个消息不能发布多次。
当您发送消息时,Pulsar 会为其分配一个唯一标识符。重复数据删除可确保在故障情况下,同一条消息不会多次存储在(或写入)Pulsar 中。它通过将标识符与已存储的标识符列表进行比较来实现这一点。如果消息的标识符已被存储,Pulsar 会忽略它。这样,Pulsar 只会存储该消息一次。这是 Pulsar 机制的一部分,用于保证消息只会发送一次。
更多详情,请参阅 PIP 6: Guaranteed Message Deduplication .
关于duplicates - Apache Pulsar 中的重复数据删除如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68837887/