【问题标题】:Kafka simple producer not sending messages and not giving an errorKafka 简单生产者不发送消息也不报错
【发布时间】:2019-06-28 10:17:21
【问题描述】:

我正在编写一个简单的生产者,我只想将原始数据发送到一个主题中。出于某种原因,我需要指定序列化器,它将消息转换为 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)

【问题讨论】:

    标签: python json serialization apache-kafka confluent-platform


    【解决方案1】:

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

    【讨论】:

    • 感谢flush工作,只是想知道像我正在做的那样发送字节是一种好习惯还是应该使用字符串序列化程序?
    猜你喜欢
    • 1970-01-01
    • 2019-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多