微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

不同的设备id到不同的分区

如何解决不同的设备id到不同的分区

我有 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,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()输出)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。