0

私はequipment_idそれが可能で1, 5, 7 or 10あり、それらを異なるパーティションに配置したいと考えています。どうやってやるの?最初に適切な数のパーティション (この場合は 4) を作成する必要がありますか? もしそうなら、次は何ですか?

import json
import random

from confluent_kafka.cimpl import Producer


def delivery_callback(err, msg):
    if err:
        print('%% Message failed delivery: %s\n' % err)
    else:
        print('%% Message delivered to %s [%d] @ %d\n' % (msg.topic(), msg.partition(), msg.offset()))


p = Producer({'bootstrap.servers': 'localhost:9092'})
p.poll(0)
equipment_id = random.choice([1, 5, 7, 10])
message = {'equipment_id': equipment_id, "value": random.randint(1, 100)}
p.produce(topic='data', value=json.dumps(message).encode(), key=str(equipment_id), callback=delivery_callback)
p.flush()

メソッドにはpartitionパラメータがありますproduce()。ただし、パーティションのシリアル番号は受け入れます: 0, 1, 2, 3. パラメータを定義するstr(equipment_id)key、常にパーティション 0 にデータが送信されます (の出力によるとdelivery_callback())。

4

0 に答える 0