Kafka简单生产者不发送消息也不给出错误

时间:2019-06-28 10:17:21

标签: python json serialization apache-kafka confluent

我正在编写一个简单的生产器,我只想将原始数据发送到主题中。由于某种原因,我需要指定序列化程序,该序列化程序会将消息转换为json,然后转换为utf-8,然后发送json消息。

此代码不起作用(没有错误,但该主题中没有消耗的东西)

from kafka import KafkaProducer

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

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

此代码有效

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)

1 个答案:

答案 0 :(得分:1)

尝试在终止程序之前在producer.flush()send()之后调用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()