Отправка списка производителю Kafka с использованием python - PullRequest
0 голосов
/ 19 марта 2019

У меня есть несколько списков, которые я хочу отправить через производителя 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'))

этот метод просто дает мне SyntaxError.Я также попробовал этот метод ниже, и я получил аналогичный результат

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

Ответы [ 2 ]

0 голосов
/ 31 марта 2019

Рассматривали ли вы кодировку JSON?Если вы сконфигурируете свой KafkaProducer с параметром value_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')))
0 голосов
/ 19 марта 2019

это решается путем первого преобразования списка в байтовые массивы.

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

arr = bytes(rList)
print(arr)

результат

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