Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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 卡夫卡简单制作人不发送消息也不给出错误_Python_Json_Serialization_Apache Kafka_Confluent Platform - Fatal编程技术网

Python 卡夫卡简单制作人不发送消息也不给出错误

Python 卡夫卡简单制作人不发送消息也不给出错误,python,json,serialization,apache-kafka,confluent-platform,Python,Json,Serialization,Apache Kafka,Confluent Platform,我正在写一个简单的制作人,我只想把原始数据发送到一个主题中。出于某种原因,我需要指定serialiser,它将消息转换为json,然后转换为utf-8,然后发送json消息 此代码不起作用(没有错误,但主题中没有要使用的内容) 此代码有效 producer = KafkaProducer(bootstrap_servers=['localhost:9092'], value_serializer=lambda x:

我正在写一个简单的制作人,我只想把原始数据发送到一个主题中。出于某种原因,我需要指定serialiser,它将消息转换为json,然后转换为utf-8,然后发送json消息

此代码不起作用(没有错误,但主题中没有要使用的内容)

此代码有效

producer = KafkaProducer(bootstrap_servers=['localhost:9092'],
                     value_serializer=lambda x:
                     dumps(x).encode('utf-8'))

for e in range(2):
    data = {'number': e}
    producer.send('numtest', value=data)
    sleep(5)

尝试在
send()
之后调用
producer.flush()
,并在终止程序之前调用
producer.close()
。下面应该可以做到这一点:

from kafka import KafkaProducer

producer = KafkaProducer(bootstrap_servers=['localhost:9092'])
topic = "my_new_topic5"

producer.send(topic, b'test message')
producer.flush()
producer.close()

感谢flush的工作,只是想知道像我现在这样发送字节是一种好的做法,还是应该使用字符串序列化程序?
from kafka import KafkaProducer

producer = KafkaProducer(bootstrap_servers=['localhost:9092'])
topic = "my_new_topic5"

producer.send(topic, b'test message')
producer.flush()
producer.close()