私は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()
)。