我已经在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')
但它在分区上发送重复的消息。
2条答案
按热度按时间mnowg1ta1#
为邮件添加密钥。kafka的默认分区器将确保所有具有重复密钥的消息都将转到同一分区。可以使用消息值的md5散列作为消息键。
lnvxswe22#
从https://kafka-python.readthedocs.io/en/master/apidoc/kafkaproducer.html#kafka.kafkaproducer.send:
因此,您可以自己手动分配目标分区,但不建议这样做,因为如果您需要用其他分区扩展主题,该怎么办?你不想更新你的代码。。。
或者可以指定自定义键。md5和应该使分布相对相等,您可以在下面的答案中看到如何创建:https://stackoverflow.com/a/5297483/770425