重复数据删除在 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。
我正在尝试使用 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。