重复数据删除在 ​​Apache Pulsar 中如何工作?

How does Deduplication work in Apache Pulsar?

我正在尝试使用 Apache Pulsar 的重复数据删除功能。

brokerDeduplicationEnabled=true 设置在 standalone.conf 文件中,但是 当我多次从生产者发送相同的消息时,我在消费者端收到了所有消息,这是预期的行为吗?

在 AWS SQS 中,重复数据删除不是意味着 content based deduplication 吗?

这是我的生产者代码供参考。

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