Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 将json对象作为键控消息传递给ApacheKafka_Python 3.x_Apache Kafka_Kafka Producer Api_Kafka Python - Fatal编程技术网

Python 3.x 将json对象作为键控消息传递给ApacheKafka

Python 3.x 将json对象作为键控消息传递给ApacheKafka,python-3.x,apache-kafka,kafka-producer-api,kafka-python,Python 3.x,Apache Kafka,Kafka Producer Api,Kafka Python,我有一个json对象,它具有不同的顺序状态。我想把这个推给阿帕奇·卡夫卡。序列是至关重要的,因为我已经设置了消费数据的消费者。我计划使用订单id作为消息的密钥,因为它将按顺序存储在同一分区中 data = [{"id": 1, "orderId": "A123","status":"PLACED"},{"id": 2, "orderId": "B123","status":"PLACED"} {"id": 3, "orderId": "A123","status":"DISPATCHED"}]

我有一个json对象,它具有不同的顺序状态。我想把这个推给阿帕奇·卡夫卡。序列是至关重要的,因为我已经设置了消费数据的消费者。我计划使用订单id作为消息的密钥,因为它将按顺序存储在同一分区中

data = [{"id": 1, "orderId": "A123","status":"PLACED"},{"id": 2, "orderId": "B123","status":"PLACED"}
{"id": 3, "orderId": "A123","status":"DISPATCHED"}]

from kafka import KafkaProducer
import json
producer = KafkaProducer(bootstrap_servers=os.environ['KAFKA_BROKER_URLS'],security_protocol="SSL")
for item in data:
    d = json.dumps(item)
    future = producer.send(topic,key=item['orderId'], value=d)
但我在《制作人》中得到了肯定。我甚至试过

d = json.dumps(item).encode('utf-8')
future = producer.send(topic,key=item['orderId'], value=d)
还可以在初始化代码中定义值序列化程序,如

producer = KafkaProducer(bootstrap_servers=os.environ['KAFKA_BROKER_URLS'],security_protocol="SSL",value_serializer=lambda v: json.dumps(v).encode('utf-8'))
他们都给出了相同的错误。 如果我移除密钥并像这样传递数据

d = json.dumps(item).encode('utf-8')    
future = producer.send(topic,d)
这是工作和信息被推到卡夫卡和显示在消费者端。但我想传递密钥,用于维护相同订单id的序列。我如何解决它

更新1:

以下是错误:

{
  "errorType": "AssertionError",
  "stackTrace": [
    "  File \"/var/task/producer.py\", line 56, future = producer.send(topic,key=item['orderId'], value=d)\n",
    "  File \"/opt/python/lib/python3.7/site-packages/kafka/producer/kafka.py\", line 572, in send\n    assert type(key_bytes) in (bytes, bytearray, memoryview, type(None))\n"
  ]
}

为什么不共享完整的错误跟踪?@giorgosmyriantous添加的错误日志。为什么不共享完整的错误跟踪?@giorgosmyriantous添加的错误日志。