使用python将列表发送给Kafka生产者

时间:2019-03-19 00:23:36

标签: list apache-kafka kafka-producer-api

我想通过卡夫卡制作人发送一些清单。

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'))

此方法只是给我一个SyntaxError。 我也在下面尝试了这种方法,并且得到了类似的结果

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

2 个答案:

答案 0 :(得分:0)

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

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

arr = bytes(rList)
print(arr)

结果是

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

答案 1 :(得分:0)

您是否考虑过JSON编码?如果您使用这样的value_serializer配置KafkaProducer:

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')))