使用python向kafka制作人发送列表

py49o6xq  于 2021-06-06  发布在  Kafka
关注(0)|答案(2)|浏览(431)

我有几个名单,我想通过Kafka制片人发送。

listA [1,2,3]
listB ["cat", "dog", "fish"]

生产者以字节的形式发送消息,所以我不确定如何正确设置消息,以便列表在需要引号时发送消息。这就是我现在拥有的。

producer = KafkaProducer(bootstrap_servers='localhost:9092')
for _ in range(1):
        print(producer.send('test', b'"worker_id": listA ,  "worker_name" : listB'))

这个方法给了我一个语法错误。我在下面也尝试过这个方法,得到了类似的结果

print(producer.send('test', b("worker_uuid": worker_uuid))
lndjwyie

lndjwyie1#

你考虑过json编码吗?如果您将kafkaproducer w/a value\u serializer配置为:

KafkaProducer(value_serializer=lambda v: json.dumps(v).encode('utf-8'))

然后,您应该能够直接发送您的列表,如下所示:

producer.send('test', [1, 2, 3])
producer.send('test', ["cat", "dog", "fish"])

消费者也需要配置为通过json进行解码。如果您使用的是kafka python,您可以执行以下操作:

KafkaConsumer(value_deserializer=lambda v: json.loads(v.decode('utf-8')))
w51jfk4q

w51jfk4q2#

这可以通过首先将列表转换为字节数组来解决。

rList = [1, 2, 3, 4, 5]

arr = bytes(rList)
print(arr)

结果是

b'\x01\x02\x03\x04\x05'

相关问题