python—如何在主题的不同分区中推送uniqe消息

kd3sttzy  于 2021-06-08  发布在  Kafka
关注(0)|答案(2)|浏览(378)

我已经在kafka中创建了一个分区计数为3的主题,现在在所有这三个分区中,我想要推送唯一的消息。有什么办法吗?我查过了 producer.send 在所有分区上推送重复消息。
对于测试,我使用以下代码:

from kafka import KafkaProducer
from kafka.errors import KafkaError

producer = KafkaProducer(bootstrap_servers=['localhost:9092'])

# Asynchronous by default

future = producer.send('my-topic', b'raw_bytes')

但它在分区上发送重复的消息。

mnowg1ta

mnowg1ta1#

为邮件添加密钥。kafka的默认分区器将确保所有具有重复密钥的消息都将转到同一分区。可以使用消息值的md5散列作为消息键。

lnvxswe2

lnvxswe22#

从https://kafka-python.readthedocs.io/en/master/apidoc/kafkaproducer.html#kafka.kafkaproducer.send:

future = producer.send(topic='my-topic', value= b'raw_bytes', key=None, partition=None, timestamp_ms=None)

因此,您可以自己手动分配目标分区,但不建议这样做,因为如果您需要用其他分区扩展主题,该怎么办?你不想更新你的代码。。。
或者可以指定自定义键。md5和应该使分布相对相等,您可以在下面的答案中看到如何创建:https://stackoverflow.com/a/5297483/770425

相关问题